X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=natalie.py;h=d5a476d58d8e4893deb55e2cbeb4cfd89b948720;hb=d904756049f3c53b562cd2c1f96f7e09dba21949;hp=3cf44fea379648fd60f5370155dd2b577fc580ab;hpb=44f78bc0385bfe71c78442c2729af19d65d7f43c;p=dak.git diff --git a/natalie.py b/natalie.py index 3cf44fea..d5a476d5 100755 --- a/natalie.py +++ b/natalie.py @@ -2,7 +2,7 @@ # Manipulate override files # Copyright (C) 2000, 2001 James Troup -# $Id: natalie.py,v 1.7 2001-07-25 16:01:02 troup Exp $ +# $Id: natalie.py,v 1.11 2001-09-27 01:23:41 troup 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 @@ -32,14 +32,12 @@ Logger = None; ################################################################################ -def usage (exit_code): +def usage (exit_code=0): print """Usage: natalie.py [OPTIONS] - -D, --debug=VALUE debug -h, --help this help - -V, --version retrieve version -c, --component=CMPT list/set overrides by component (contrib,*main,non-free) - -s, --suite=SUITE list/set overrides by suite + -s, --suite=SUITE list/set overrides by suite (experimental,stable,testing,*unstable) -t, --type=TYPE list/set overrides by type (*deb,dsc,udeb) @@ -53,7 +51,7 @@ def usage (exit_code): def init (): global projectB; - + projectB = pg.connect('projectb', None); db_access.init(Cnf, projectB); @@ -73,7 +71,7 @@ def process_file (file, suite, component, type): # --set is done mostly internal for performance reasons; most # invocations of --set will be updates and making people wait 2-3 # minutes while 6000 select+inserts are run needlessly isn't cool. - + original = {}; new = {}; c_skipped = 0; @@ -81,7 +79,7 @@ def process_file (file, suite, component, type): c_updated = 0; c_removed = 0; c_error = 0; - + q = projectB.query("SELECT o.package, o.priority, o.section, o.maintainer, p.priority, s.section FROM override o, priority p, section s WHERE o.suite = %s AND o.component = %s AND o.type = %s and o.priority = p.id and o.section = s.id" % (suite_id, component_id, type_id)); for i in q.getresult(): @@ -93,8 +91,8 @@ def process_file (file, suite, component, type): line = string.strip(utils.re_comments.sub('', line[:-1])) if line == "": continue; - - maintainer_override = ""; + + maintainer_override = None; if type == "dsc": split_line = string.split(line, None, 2); if len(split_line) == 2: @@ -138,7 +136,7 @@ def process_file (file, suite, component, type): if old_priority_id == priority_id and old_section_id == section_id and old_maintainer_override == maintainer_override: # Same? Ignore it c_skipped = c_skipped + 1; - continue; + continue; else: # Changed? Delete the old one so we can reinsert it with the new information c_updated = c_updated + 1; @@ -155,7 +153,7 @@ def process_file (file, suite, component, type): else: c_added = c_added + 1; update_p = 0; - + if maintainer_override: projectB.query("INSERT INTO override (suite, component, type, package, priority, section, maintainer) VALUES (%s, %s, %s, '%s', %s, %s, '%s')" % (suite_id, component_id, type_id, package, priority_id, section_id, maintainer_override)); @@ -196,11 +194,11 @@ def list(suite, component, type): if type == "dsc": q = projectB.query("SELECT o.package, s.section, o.maintainer FROM override o, section s WHERE o.suite = %s AND o.component = %s AND o.type = %s AND o.section = s.id ORDER BY s.section, o.package" % (suite_id, component_id, type_id)); for i in q.getresult(): - print string.join(i, '\t'); + print utils.result_join(i); else: q = projectB.query("SELECT o.package, p.priority, s.section, o.maintainer, p.level FROM override o, priority p, section s WHERE o.suite = %s AND o.component = %s AND o.type = %s AND o.priority = p.id AND o.section = s.id ORDER BY s.section, p.level, o.package" % (suite_id, component_id, type_id)); for i in q.getresult(): - print string.join(i[:-1], '\t'); + print utils.result_join(i[:-1]); ################################################################################ @@ -208,21 +206,27 @@ def main (): global Cnf, projectB, Logger; apt_pkg.init(); - + Cnf = apt_pkg.newConfiguration(); apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file()); - Arguments = [('D',"debug","Natalie::Options::Debug", "IntVal"), - ('h',"help","Natalie::Options::Help"), - ('V',"version","Natalie::Options::Version"), + Arguments = [('h',"help","Natalie::Options::Help"), ('c',"component", "Natalie::Options::Component", "HasArg"), ('l',"list", "Natalie::Options::List"), ('s',"suite","Natalie::Options::Suite", "HasArg"), ('S',"set","Natalie::Options::Set"), ('t',"type","Natalie::Options::Type", "HasArg")]; + + # Default arguments + for i in ["help", "list", "set" ]: + Cnf["Natalie::Options::%s" % (i)] = ""; + Cnf["Natalie::Options::Component"] = "main"; + Cnf["Natalie::Options::Suite"] = "unstable"; + Cnf["Natalie::Options::Type"] = "deb"; + file_list = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); if Cnf["Natalie::Options::Help"]: - usage(0); + usage(); init();