]> git.decadent.org.uk Git - dak.git/blobdiff - dak/init_dirs.py
Fix my very own shiny bug
[dak.git] / dak / init_dirs.py
index d462ca486533829a3d16ba9d103a96e28cc247fa..d095eeee986b7bdb6093861eb81cda6a32deb79e 100755 (executable)
@@ -1,8 +1,7 @@
 #!/usr/bin/env python
 
-# Initial setup of an archive
-# Copyright (C) 2002, 2004  James Troup <james@nocrew.org>
-# $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 <james@nocrew.org>
 
 # 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
 
 ################################################################################
 
-import os, sys;
-import utils;
-import apt_pkg;
+import os, sys
+import apt_pkg
+from daklib import 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,85 +42,103 @@ 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));
+            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")];
+    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:
+        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, utils.which_apt_conf_file())
 
-    create_directories();
+    create_directories()
 
 ################################################################################
 
 if __name__ == '__main__':
     main()
-