X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=shania;h=799aebd49566f0b883b768684fb22fb1e85477e0;hb=c5617d291dc17395a9d23c757d7dc815f6eed49e;hp=83b748ae104fb981ebc29fc7adbc90ed3cec5dd5;hpb=5fc7cefdb9b600c729ca5a82fd5b3a828f4fd370;p=dak.git diff --git a/shania b/shania index 83b748ae..799aebd4 100755 --- a/shania +++ b/shania @@ -1,8 +1,8 @@ #!/usr/bin/env python # Clean incoming of old unused files -# Copyright (C) 2000, 2001 James Troup -# $Id: shania,v 1.6 2001-09-27 01:22:51 troup Exp $ +# Copyright (C) 2000, 2001, 2002 James Troup +# $Id: shania,v 1.17 2002-10-16 02:47:32 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 @@ -20,32 +20,30 @@ ################################################################################ -import os, re, stat, string, sys, time, traceback -import utils -import apt_pkg; +# Bdale, a ham-er, and the leader, +# Willy, a GCC maintainer, +# Lamont-work, 'cause he's the top uploader.... +# Penguin Puff' save the day! +# Porting code, trying to build the world, +# Here they come just in time... +# The Penguin Puff' Guys! +# [repeat] +# Penguin Puff'! +# willy: btw, if you don't maintain gcc you need to start, since +# the lyrics fit really well that way ################################################################################ -# 23:12| I will not hush! -# 23:12| :> -# 23:12| Where there is injustice in the world, I shall be there! -# 23:13| I shall not be silenced! -# 23:13| The world shall know! -# 23:13| The world *must* know! -# 23:13| oh dear, he's gone back to powerpuff girls... ;-) -# 23:13| yay powerpuff girls!! -# 23:13| buttercup's my favourite, who's yours? -# 23:14| you're backing away from the keyboard right now aren't you? -# 23:14| *AREN'T YOU*?! -# 23:15| I will not be treated like this. -# 23:15| I shall have my revenge. -# 23:15| I SHALL!!! +import os, stat, sys, time; +import utils; +import apt_pkg; ################################################################################ Cnf = None; Options = None; del_dir = None; +delete_date = None; ################################################################################ @@ -70,7 +68,7 @@ def init (): # Ensure a directory exists to remove files to if not Options["No-Action"]: - date = time.strftime("%Y-%m-%d", time.localtime(time.time())); + date = time.strftime("%Y-%m-%d"); del_dir = Cnf["Dir::Morgue"] + '/' + Cnf["Shania::MorgueSubDir"] + '/' + date; if not os.path.exists(del_dir): os.makedirs(del_dir, 02775); @@ -80,7 +78,7 @@ def init (): # Move to the directory to clean incoming = Options["Incoming"]; if incoming == "": - incoming = Cnf["Dir::IncomingDir"]; + incoming = Cnf["Dir::Queue::Unchecked"]; os.chdir(incoming); # Remove a file to the morgue @@ -90,7 +88,7 @@ def remove (file): # If the destination file exists; try to find another filename to use if os.path.exists(dest_filename): dest_filename = utils.find_next_free(dest_filename, 10); - utils.move(file, dest_filename); + utils.move(file, dest_filename, 0660); else: utils.warn("skipping '%s', permission denied." % (os.path.basename(file))); @@ -122,24 +120,24 @@ def flush_orphans (): for i in os.listdir('.'): if os.path.isfile(i): all_files[i] = 1; - if i[-8:] == ".changes": + if i.endswith(".changes"): changes_files.append(i); # Proces all .changes and .dsc files. for changes_filename in changes_files: try: - changes = utils.parse_changes(changes_filename, 0) - files = utils.build_file_list(changes, ""); + changes = utils.parse_changes(changes_filename); + files = utils.build_file_list(changes); except: - utils.warn("error processing '%s'; skipping it. [Got %s]" % (file, sys.exc_type)); + utils.warn("error processing '%s'; skipping it. [Got %s]" % (changes_filename, sys.exc_type)); continue; dsc_files = {}; for file in files.keys(): - if file[-4:] == ".dsc": + if file.endswith(".dsc"): try: - dsc = utils.parse_changes(file, 0) - dsc_files = utils.build_file_list(dsc, 1) + dsc = utils.parse_changes(file); + dsc_files = utils.build_file_list(dsc, is_a_dsc=1); except: utils.warn("error processing '%s'; skipping it. [Got %s]" % (file, sys.exc_type)); continue; @@ -173,18 +171,19 @@ def flush_orphans (): def main (): global Cnf, Options; - apt_pkg.init(); + Cnf = utils.get_conf() - Cnf = apt_pkg.newConfiguration(); - apt_pkg.ReadConfigFileISC(Cnf,utils.which_conf_file()); + for i in ["Help", "Incoming", "No-Action", "Verbose" ]: + if not Cnf.has_key("Shania::Options::%s" % (i)): + Cnf["Shania::Options::%s" % (i)] = ""; + if not Cnf.has_key("Shania::Options::Days"): + Cnf["Shania::Options::Days"] = "14"; Arguments = [('h',"help","Shania::Options::Help"), - ('d',"days","Shania::Options::Days", "IntVal"), + ('d',"days","Shania::Options::Days", "IntLevel"), ('i',"incoming","Shania::Options::Incoming", "HasArg"), ('n',"no-action","Shania::Options::No-Action"), ('v',"verbose","Shania::Options::Verbose")]; - for i in ["help", "days", "incoming", "no-action", "verbose" ]: - Cnf["Shania::Options::%s" % (i)] = ""; apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); Options = Cnf.SubTree("Shania::Options") @@ -192,7 +191,7 @@ def main (): if Options["Help"]: usage(); - init (); + init(); if Options["Verbose"]: print "Processing incoming..." @@ -207,4 +206,4 @@ def main (): ####################################################################################### if __name__ == '__main__': - main() + main();