X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Finit_dirs.py;h=0d9eff29bea15776e6406091a967e2523656fb28;hb=0428b537276f1c257c624183745e688e43fa6b06;hp=d462ca486533829a3d16ba9d103a96e28cc247fa;hpb=59fd5aa2a8be3b76dbc968429c457f096adfa472;p=dak.git diff --git a/dak/init_dirs.py b/dak/init_dirs.py index d462ca48..0d9eff29 100755 --- a/dak/init_dirs.py +++ b/dak/init_dirs.py @@ -1,8 +1,7 @@ #!/usr/bin/env python -# Initial setup of an archive -# Copyright (C) 2002, 2004 James Troup -# $Id: rose,v 1.4 2004-03-11 00:20:51 troup Exp $ +"""Initial setup of an archive.""" +# Copyright (C) 2002, 2004, 2006 James Troup # 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 @@ -20,20 +19,22 @@ ################################################################################ -import os, sys; -import utils; -import apt_pkg; +import os, sys +import apt_pkg +import daklib.utils ################################################################################ -Cnf = None; -AptCnf = None; +Cnf = None +AptCnf = None ################################################################################ def usage(exit_code=0): - print """Usage: rose -Creates directories for an archive based on katie.conf configuration file. + """Print a usage message and exit with 'exit_code'.""" + + print """Usage: dak init-dirs +Creates directories for an archive based on dak.conf configuration file. -h, --help show this help and exit.""" sys.exit(exit_code) @@ -41,82 +42,101 @@ Creates directories for an archive based on katie.conf configuration file. ################################################################################ def do_dir(target, config_name): + """If 'target' exists, make sure it is a directory. If it doesn't, create +it.""" + if os.path.exists(target): if not os.path.isdir(target): - utils.fubar("%s (%s) is not a directory." % (target, config_name)); + daklib.utils.fubar("%s (%s) is not a directory." + % (target, config_name)) else: - print "Creating %s ..." % (target); - os.makedirs(target); + print "Creating %s ..." % (target) + os.makedirs(target) def process_file(config, config_name): + """Create directories for a config entry that's a filename.""" + if config.has_key(config_name): - target = os.path.dirname(config[config_name]); - do_dir(target, config_name); + target = os.path.dirname(config[config_name]) + do_dir(target, config_name) def process_tree(config, tree): + """Create directories for a config tree.""" + for entry in config.SubTree(tree).List(): - entry = entry.lower(); + entry = entry.lower() if tree == "Dir": if entry in [ "poolroot", "queue" , "morguereject" ]: - continue; - config_name = "%s::%s" % (tree, entry); - target = config[config_name]; - do_dir(target, config_name); + continue + config_name = "%s::%s" % (tree, entry) + target = config[config_name] + do_dir(target, config_name) def process_morguesubdir(subdir): - config_name = "%s::MorgueSubDir" % (subdir); + """Create directories for morgue sub directories.""" + + config_name = "%s::MorgueSubDir" % (subdir) if Cnf.has_key(config_name): - target = os.path.join(Cnf["Dir::Morgue"], Cnf[config_name]); - do_dir(target, config_name); + target = os.path.join(Cnf["Dir::Morgue"], Cnf[config_name]) + do_dir(target, config_name) ###################################################################### def create_directories(): - # Process directories from apt.conf - process_tree(Cnf, "Dir"); - process_tree(Cnf, "Dir::Queue"); - for file in [ "Dinstall::LockFile", "Melanie::LogFile", "Neve::ExportDir" ]: - process_file(Cnf, file); - for subdir in [ "Shania", "Rhona" ]: - process_morguesubdir(subdir); + """Create directories referenced in dak.conf and apt.conf.""" + + # Process directories from dak.conf + process_tree(Cnf, "Dir") + process_tree(Cnf, "Dir::Queue") + for config_name in [ "Dinstall::LockFile", "Rm::LogFile", + "Import-Archive::ExportDir" ]: + process_file(Cnf, config_name) + for subdir in [ "Clean-Queues", "Clean-Suites" ]: + process_morguesubdir(subdir) # Process directories from apt.conf - process_tree(AptCnf, "Dir"); + process_tree(AptCnf, "Dir") for tree in AptCnf.SubTree("Tree").List(): - config_name = "Tree::%s" % (tree); - tree_dir = os.path.join(Cnf["Dir::Root"], tree); - do_dir(tree_dir, tree); - for file in [ "FileList", "SourceFileList" ]: - process_file(AptCnf, "%s::%s" % (config_name, file)); + config_name = "Tree::%s" % (tree) + tree_dir = os.path.join(Cnf["Dir::Root"], tree) + do_dir(tree_dir, tree) + for filename in [ "FileList", "SourceFileList" ]: + process_file(AptCnf, "%s::%s" % (config_name, filename)) for component in AptCnf["%s::Sections" % (config_name)].split(): - for architecture in AptCnf["%s::Architectures" % (config_name)].split(): + for architecture in AptCnf["%s::Architectures" \ + % (config_name)].split(): if architecture != "source": - architecture = "binary-"+architecture; - target = os.path.join(tree_dir,component,architecture); - do_dir(target, "%s, %s, %s" % (tree, component, architecture)); + architecture = "binary-"+architecture + target = os.path.join(tree_dir, component, architecture) + do_dir(target, "%s, %s, %s" % (tree, component, architecture)) ################################################################################ def main (): - global AptCnf, Cnf, projectB; + """Initial setup of an archive.""" + + global AptCnf, Cnf - Cnf = utils.get_conf() - Arguments = [('h',"help","Rose::Options::Help")]; + Cnf = daklib.utils.get_conf() + arguments = [('h', "help", "Init-Dirs::Options::Help")] for i in [ "help" ]: - if not Cnf.has_key("Rose::Options::%s" % (i)): - Cnf["Rose::Options::%s" % (i)] = ""; + if not Cnf.has_key("Init-Dirs::Options::%s" % (i)): + Cnf["Init-Dirs::Options::%s" % (i)] = "" - apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv); + arguments = apt_pkg.ParseCommandLine(Cnf, arguments, sys.argv) - Options = Cnf.SubTree("Rose::Options") - if Options["Help"]: - usage(); + options = Cnf.SubTree("Init-Dirs::Options") + if options["Help"]: + usage() + elif arguments: + daklib.utils.warn("dak init-dirs takes no arguments.") + usage(exit_code=1) - AptCnf = apt_pkg.newConfiguration(); - apt_pkg.ReadConfigFileISC(AptCnf,utils.which_apt_conf_file()); + AptCnf = apt_pkg.newConfiguration() + apt_pkg.ReadConfigFileISC(AptCnf, daklib.utils.which_apt_conf_file()) - create_directories(); + create_directories() ################################################################################