提交 2c9e82a8 编写于 作者: J James Troup

new script

上级 b5d32f0b
#!/usr/bin/env python
# Initial setup of an archive
# Copyright (C) 2002 James Troup <james@nocrew.org>
# $Id: rose,v 1.1 2002-10-16 02:45:12 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
################################################################################
import os, sys;
import utils;
import apt_pkg;
################################################################################
Cnf = None;
################################################################################
def do_dir(target, config_name):
if os.path.exists(target):
if not os.path.isdir(target):
utils.fubar("%s (%s) is not a directory." % (target, config_name));
else:
print "Creating %s ..." % (target);
os.makedirs(target);
def process_file(config, config_name):
if config.has_key(config_name):
target = os.path.dirname(config[config_name]);
do_dir(target, config_name);
def process_tree(config, tree):
for entry in config.SubTree(tree).List():
entry = entry.lower();
if tree == "Dir":
if entry == "poolroot" or entry == "queue" or entry == "morguereject":
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);
if Cnf.has_key(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);
# Process directories from apt.conf
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));
for component in AptCnf["%s::Sections" % (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));
################################################################################
def main ():
global Cnf, projectB;
Cnf = utils.get_conf()
apt_pkg.ParseCommandLine(Cnf,[],sys.argv);
AptCnf = apt_pkg.newConfiguration();
apt_pkg.ReadConfigFileISC(AptCnf,utils.which_apt_conf_file());
create_directories();
################################################################################
if __name__ == '__main__':
main()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册