X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Ftransitions.py;h=d8845a0bfe153b9aea560f681a48613b75e8e68d;hb=195caf3ae4b2150a7234de64d0907d74f9a4c0be;hp=121edc2f4dd88b7277a3b7160b0e13151cbda8ad;hpb=738b9f6a08d6369a17a8f5de18e26ea5b8bd1c70;p=dak.git diff --git a/dak/transitions.py b/dak/transitions.py index 121edc2f..d8845a0b 100755 --- a/dak/transitions.py +++ b/dak/transitions.py @@ -23,7 +23,7 @@ ################################################################################ -import os, pg, sys, time, errno, fcntl, tempfile +import os, pg, sys, time, errno, fcntl, tempfile, pwd import apt_pkg import daklib.database import daklib.utils @@ -47,7 +47,7 @@ def init(): ('e',"edit","Edit-Transitions::Options::Edit"), ('i',"import","Edit-Transitions::Options::Import", "HasArg"), ('c',"check","Edit-Transitions::Options::Check"), - ('S',"use-sudo","Edit-Transitions::Options::Sudo"), + ('s',"sudo","Edit-Transitions::Options::Sudo"), ('n',"no-action","Edit-Transitions::Options::No-Action")] for i in ["help", "no-action", "edit", "import", "check", "sudo"]: @@ -58,18 +58,24 @@ def init(): Options = Cnf.SubTree("Edit-Transitions::Options") - projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) - daklib.database.init(Cnf, projectB) - if Options["help"]: usage() + whoami = os.getuid() + whoamifull = pwd.getpwuid(whoami) + username = whoamifull[0] + if username != "dak": + print "Non-dak user: %s" % username + Options["sudo"] = "y" + + projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) + daklib.database.init(Cnf, projectB) + ################################################################################ def usage (exit_code=0): print """Usage: transitions [OPTION]... Update and check the release managers transition file. -transitions. Options: @@ -78,7 +84,7 @@ Options: -i, --import check and import transitions from file -c, --check check the transitions file, remove outdated entries -S, --sudo use sudo to update transitions file - -n, --no-action don't do anything""" + -n, --no-action don't do anything (only affects check)""" sys.exit(exit_code) @@ -160,8 +166,11 @@ def write_transitions_from_file(from_file): def temp_transitions_file(transitions): # NB: file is unlinked by caller, but fd is never actually closed. - + # We need the chmod, as the file is (most possibly) copied from a + # sudo-ed script and would be unreadable if it has default mkstemp mode + (fd, path) = tempfile.mkstemp("","transitions") + os.chmod(path, 0644) f = open(path, "w") syck.dump(transitions, f) return path @@ -185,11 +194,12 @@ def edit_transitions(): if test == None: # Edit is broken - print "Edit was unparsable." + print "Edit was unparsable." prompt = "[E]dit again, Drop changes?" - default = "E" - else: - print "Edit looks okay.\n" + default = "E" + else: + print "Edit looks okay.\n" + print "The following transitions are defined:" print "------------------------------------------------------------------------" transition_info(test) @@ -212,9 +222,9 @@ def edit_transitions(): elif answer == 'S': # Ready to save break - else: - print "You pressed something you shouldn't have :(" - sys.exit(1) + else: + print "You pressed something you shouldn't have :(" + sys.exit(1) # We seem to be done and also have a working file. Copy over. write_transitions_from_file(edit_file)