X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Ftransitions.py;h=b7e50651e8d4daf7b8d284f89bf4a9e5c0fe10cf;hb=f8996e240d9d0278bce098e23be63db0bcc6fbee;hp=374beabbb9967a24a36a9616f474977c47b9dece;hpb=d0a12f9f8e9fe208a277e020d244a55eb6a874c4;p=dak.git diff --git a/dak/transitions.py b/dak/transitions.py old mode 100644 new mode 100755 index 374beabb..b7e50651 --- a/dak/transitions.py +++ b/dak/transitions.py @@ -25,9 +25,10 @@ import os, pg, sys, time, errno, fcntl, tempfile, pwd, re import apt_pkg -import daklib.database -import daklib.utils -import syck +from daklib import database +from daklib import utils +from daklib.dak_exceptions import TransitionsError +import yaml # Globals Cnf = None @@ -46,7 +47,7 @@ def init(): apt_pkg.init() - Cnf = daklib.utils.get_conf() + Cnf = utils.get_conf() Arguments = [('h',"help","Edit-Transitions::Options::Help"), ('e',"edit","Edit-Transitions::Options::Edit"), @@ -74,7 +75,7 @@ def init(): Options["sudo"] = "y" projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) - daklib.database.init(Cnf, projectB) + database.init(Cnf, projectB) ################################################################################ @@ -104,10 +105,10 @@ def load_transitions(trans_file): sourcecontent = sourcefile.read() failure = False try: - trans = syck.load(sourcecontent) - except syck.error, msg: + trans = yaml.load(sourcecontent) + except yaml.YAMLError, exc: # Someone fucked it up - print "ERROR: %s" % (msg) + print "ERROR: %s" % (exc) return None # lets do further validation here @@ -197,7 +198,7 @@ def lock_file(f): else: raise - daklib.utils.fubar("Couldn't obtain lock for %s." % (f)) + utils.fubar("Couldn't obtain lock for %s." % (f)) ################################################################################ @@ -218,7 +219,7 @@ def write_transitions(from_trans): temp_lock = lock_file(trans_temp) destfile = file(trans_temp, 'w') - syck.dump(from_trans, destfile) + yaml.dump(from_trans, destfile, default_flow_style=False) destfile.close() os.rename(trans_temp, trans_file) @@ -227,9 +228,6 @@ def write_transitions(from_trans): ################################################################################ -class ParseException(Exception): - pass - ########################################## #### This usually runs within sudo !! #### ########################################## @@ -248,7 +246,7 @@ def write_transitions_from_file(from_file): else: trans = load_transitions(from_file) if trans is None: - raise ParseException, "Unparsable transitions file %s" % (file) + raise TransitionsError, "Unparsable transitions file %s" % (file) write_transitions(trans) ################################################################################ @@ -261,7 +259,7 @@ def temp_transitions_file(transitions): (fd, path) = tempfile.mkstemp("", "transitions", Cnf["Transitions::TempPath"]) os.chmod(path, 0644) f = open(path, "w") - syck.dump(transitions, f) + yaml.dump(transitions, f, default_flow_style=False) return path ################################################################################ @@ -276,7 +274,7 @@ def edit_transitions(): result = os.system("%s %s" % (editor, edit_file)) if result != 0: os.unlink(edit_file) - daklib.utils.fubar("%s invocation failed for %s, not removing tempfile." % (editor, edit_file)) + utils.fubar("%s invocation failed for %s, not removing tempfile." % (editor, edit_file)) # Now try to load the new file test = load_transitions(edit_file) @@ -297,7 +295,7 @@ def edit_transitions(): answer = "XXX" while prompt.find(answer) == -1: - answer = daklib.utils.our_raw_input(prompt) + answer = utils.our_raw_input(prompt) if answer == "": answer = default answer = answer[:1].upper() @@ -333,7 +331,7 @@ def check_transitions(transitions): expected = t["new"] # Will be None if nothing is in testing. - current = daklib.database.get_suite_version(source, "testing") + current = database.get_suite_version(source, "testing") print_info(trans, source, expected, t["rm"], t["reason"], t["packages"]) @@ -365,7 +363,7 @@ def check_transitions(transitions): if Options["no-action"]: answer="n" else: - answer = daklib.utils.our_raw_input(prompt).lower() + answer = utils.our_raw_input(prompt).lower() if answer == "": answer = "n" @@ -407,7 +405,7 @@ def transition_info(transitions): expected = t["new"] # Will be None if nothing is in testing. - current = daklib.database.get_suite_version(source, "testing") + current = database.get_suite_version(source, "testing") print_info(trans, source, expected, t["rm"], t["reason"], t["packages"]) @@ -439,26 +437,26 @@ def main(): # Check if there is a file defined (and existant) transpath = Cnf.get("Dinstall::Reject::ReleaseTransitions", "") if transpath == "": - daklib.utils.warn("Dinstall::Reject::ReleaseTransitions not defined") + utils.warn("Dinstall::Reject::ReleaseTransitions not defined") sys.exit(1) if not os.path.exists(transpath): - daklib.utils.warn("ReleaseTransitions file, %s, not found." % + utils.warn("ReleaseTransitions file, %s, not found." % (Cnf["Dinstall::Reject::ReleaseTransitions"])) sys.exit(1) # Also check if our temp directory is defined and existant temppath = Cnf.get("Transitions::TempPath", "") if temppath == "": - daklib.utils.warn("Transitions::TempPath not defined") + utils.warn("Transitions::TempPath not defined") sys.exit(1) if not os.path.exists(temppath): - daklib.utils.warn("Temporary path %s not found." % + utils.warn("Temporary path %s not found." % (Cnf["Transitions::TempPath"])) sys.exit(1) if Options["import"]: try: write_transitions_from_file(Options["import"]) - except ParseException, m: + except TransitionsError, m: print m sys.exit(2) sys.exit(0) @@ -470,7 +468,7 @@ def main(): transitions = load_transitions(transpath) if transitions == None: # Something very broken with the transitions, exit - daklib.utils.warn("Could not parse existing transitions file. Aborting.") + utils.warn("Could not parse existing transitions file. Aborting.") sys.exit(2) if Options["edit"]: