X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=shania;h=74a76055a02eab4c063a581be84e17df81c1cced;hb=9540d873fa78598454af57f5f8a4875969ed0439;hp=2f86488f04df73de9f2e2864a379aabf82578425;hpb=bb2bb29985ed5bcb92505926e7e7a6ac3b976f8b;p=dak.git diff --git a/shania b/shania index 2f86488f..74a76055 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.7 2001-11-14 05:06:14 rmurray Exp $ +# Copyright (C) 2000, 2001, 2002 James Troup +# $Id: shania,v 1.18 2005-03-06 21:51:51 rmurray 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,19 +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", "Incoming", "No-Action", "Verbose" ]: - Cnf["Shania::Options::%s" % (i)] = ""; - Cnf["Shania::Options::Days"] = 14; apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); Options = Cnf.SubTree("Shania::Options") @@ -193,19 +191,20 @@ def main (): if Options["Help"]: usage(); - init (); + init(); if Options["Verbose"]: print "Processing incoming..." flush_orphans(); - if os.path.exists("REJECT") and os.path.isdir("REJECT"): + reject = Cnf["Dir::Queue::Reject"] + if os.path.exists(reject) and os.path.isdir(reject): if Options["Verbose"]: print "Processing incoming/REJECT..." - os.chdir("REJECT"); + os.chdir(reject); flush_old(); ####################################################################################### if __name__ == '__main__': - main() + main();