X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=alicia;h=28426a710ebe6110e991768575e69354e34338dc;hb=18402e6704a1aa1626602c0b41055f653efa99bd;hp=50e5745d5117c63f251511769b8501ae758ae092;hpb=95ee2535ab74f16d0e46a030ba5c728cc1129c70;p=dak.git diff --git a/alicia b/alicia index 50e5745d..28426a71 100755 --- a/alicia +++ b/alicia @@ -2,7 +2,7 @@ # Microscopic modification and query tool for overrides in projectb # Copyright (C) 2004 Daniel Silverstone -# $Id: alicia,v 1.1 2004-01-29 01:00:08 dsilvers Exp $ +# $Id: alicia,v 1.3 2004-02-02 23:50:18 dsilvers Exp $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -46,10 +46,11 @@ def game_over(): def usage (exit_code=0): - print """Usage: alicia [OPTIONS] package [section priority] -Make a microscopic override change/query + print """Usage: alicia [OPTIONS] package [section] [priority] +Make microchanges or microqueries of the overrides -h, --help show this help and exit + -d, --done=BUG# send priority/section change as closure to bug# -n, --no-action don't do anything -s, --suite specify the suite to use """ @@ -61,6 +62,7 @@ def main (): Cnf = utils.get_conf() Arguments = [('h',"help","Alicia::Options::Help"), + ('d',"done","Alicia::Options::Done", "HasArg"), ('n',"no-action","Alicia::Options::No-Action"), ('s',"suite","Alicia::Options::Suite", "HasArg"), ]; @@ -83,7 +85,7 @@ def main (): utils.fubar("package name is a required argument."); package = arguments.pop(0); - + suite = Options["Suite"] if arguments and len(arguments) > 2: utils.fubar("Too many arguments"); @@ -100,7 +102,7 @@ def main (): elif r[0][1] == 1: arguments = (".",arg); else: - utils.fubar("%s is not a valid section or priority"); + utils.fubar("%s is not a valid section or priority" % (arg)); # Retrieve current section/priority... @@ -112,7 +114,7 @@ def main (): AND override.package = %s AND override.suite = suite.id AND suite.suite_name = %s - """ % (pg._quote(package,"str"), pg._quote(Options["Suite"],"str"))); + """ % (pg._quote(package,"str"), pg._quote(suite,"str"))); if q.ntuples() == 0: utils.fubar("Unable to find package %s" % (package)); @@ -160,6 +162,9 @@ def main (): print "I: Would change priority from %s to %s" % (oldpriority,newpriority); if newsection != oldsection: print "I: Would change section from %s to %s" % (oldsection,newsection); + if Options.has_key("Done"): + print "I: Would also close bug(s): %s" % (Options["Done"]); + sys.exit(0); if newpriority != oldpriority: @@ -167,6 +172,11 @@ def main (): if newsection != oldsection: print "I: Will change section from %s to %s" % (oldsection,newsection); + if not Options.has_key("Done"): + utils.warn("No bugs to close have been specified. Noone will know you have done this."); + else: + print "I: Will close bug(s): %s" % (Options["Done"]); + game_over(); Logger = logging.Logger(Cnf, "alicia"); @@ -181,7 +191,7 @@ def main (): AND suite = (SELECT id FROM suite WHERE suite_name=%s)""" % ( newprioid, pg._quote(package,"str"), - pg._quote(Options["Suite"],"str") )); + pg._quote(suite,"str") )); Logger.log(["changed priority",package,oldpriority,newpriority]); if newsection != oldsection: @@ -192,10 +202,43 @@ def main (): AND suite = (SELECT id FROM suite WHERE suite_name=%s)""" % ( newsecid, pg._quote(package,"str"), - pg._quote(Options["Suite"],"str") )); + pg._quote(suite,"str") )); Logger.log(["changed priority",package,oldsection,newsection]); projectB.query("COMMIT WORK"); + if Options.has_key("Done"): + Subst = {}; + Subst["__ALICIA_ADDRESS__"] = Cnf["Alicia::MyEmailAddress"]; + Subst["__BUG_SERVER__"] = Cnf["Dinstall::BugServer"]; + bcc = []; + if Cnf.Find("Dinstall::Bcc") != "": + bcc.append(Cnf["Dinstall::Bcc"]); + if Cnf.Find("Alicia::Bcc") != "": + bcc.append(Cnf["Alicia::Bcc"]); + if bcc: + Subst["__BCC__"] = "Bcc: " + ", ".join(bcc); + else: + Subst["__BCC__"] = "X-Filler: 42"; + Subst["__CC__"] = "X-Katie: alicia $Revision: 1.3 $"; + Subst["__ADMIN_ADDRESS__"] = Cnf["Dinstall::MyAdminAddress"]; + Subst["__DISTRO__"] = Cnf["Dinstall::MyDistribution"]; + Subst["__WHOAMI__"] = utils.whoami(); + + summary = "Concerning package %s...\n" % (package); + summary += "Operating on the %s suite\n" % (suite); + if newpriority != oldpriority: + summary += "Changed priority from %s to %s\n" % (oldpriority,newpriority); + if newsection != oldsection: + summary += "Changed section from %s to %s\n" % (oldsection,newsection); + Subst["__SUMMARY__"] = summary; + + for bug in utils.split_args(Options["Done"]): + Subst["__BUG_NUMBER__"] = bug; + mail_message = utils.TemplateSubst( + Subst,Cnf["Dir::Templates"]+"/alicia.bug-close"); + utils.send_mail(mail_message); + Logger.log(["closed bug",bug]); + Logger.close(); print "Done";