[csw-devel] SF.net SVN: gar:[17700] csw/mgar/gar/v2/lib/python/build_tier_list.py
wbonnet at users.sourceforge.net
wbonnet at users.sourceforge.net
Sun Apr 15 18:42:52 CEST 2012
Revision: 17700
http://gar.svn.sourceforge.net/gar/?rev=17700&view=rev
Author: wbonnet
Date: 2012-04-15 16:42:52 +0000 (Sun, 15 Apr 2012)
Log Message:
-----------
Add min-age and max-age command line flags
Modified Paths:
--------------
csw/mgar/gar/v2/lib/python/build_tier_list.py
Modified: csw/mgar/gar/v2/lib/python/build_tier_list.py
===================================================================
--- csw/mgar/gar/v2/lib/python/build_tier_list.py 2012-04-15 15:18:28 UTC (rev 17699)
+++ csw/mgar/gar/v2/lib/python/build_tier_list.py 2012-04-15 16:42:52 UTC (rev 17700)
@@ -22,6 +22,10 @@
self.parser = OptionParser()
# Add the different command line options to the parser
+ self.parser.add_option("-m", "--min-age", help="Defines the minimum age of the package",
+ action="store", dest="minage", type="int")
+ self.parser.add_option("-M", "--max-age", help="Defines the maximum age of the package",
+ action="store", dest="maxage", type="int")
self.parser.add_option("-c", "--catalog", help="Defines the catalog to parse. Default is ./catalog",
action="store", dest="catalog", type="string")
self.parser.add_option("-1", "--tier1-list", help="List of tier 1 packages",
@@ -76,6 +80,10 @@
else:
self.tier3 = "./tier3"
+ # This members can be undefined (None) if the option was not passed on the CLI
+ self.minage = args.minage
+ self.maxage = args.maxage
+
# -----------------------------------------------------------------------------------------------------------------
def getCatalog(self):
@@ -102,6 +110,12 @@
def getVerbose(self):
return self.verbose
+ def getMinAge(self):
+ return self.minage
+
+ def getMaxAge(self):
+ return self.maxage
+
# ---------------------------------------------------------------------------------------------------------------------
#
#
@@ -126,6 +140,7 @@
# Thus date is initialized to None. If it is possible to extract one from
# revision string, then it will be set
self.date = None
+ self.age = None
# Retrieve the date from the revision string, if it exists
re_revisionString = re.compile(',REV=(?P<date>20\d\d\.\d\d\.\d\d)')
@@ -138,17 +153,19 @@
self.date = date(year=int(d2[0]) , month=int(d2[1]), day=int(d2[2]))
# Compute the time elapsed between today and the update date
- delta = date.today() - self.date
+ self.age = date.today() - self.date
# If the delta between date is more than 365 days, then it has not been updated for a year
# it goes to tier 3
- if delta.days > 365:
+ if self.age.days > 365:
self.tier = 3
# Otherwise there is a quite recent update, it moves to tier 2
else:
self.tier = 2
-
+ # Store the inital tier
+ self.original = self.tier
+
def setTier(self, tier):
# Access to the global variable storing the catalog
global catalog
@@ -215,8 +232,16 @@
for pkg in catalog:
# If simulation mode is off the output to the file
if configParser.getSimulate() == False:
- outputFile[catalog[pkg].tier].write("%(name)s\n" % { 'name' : catalog[pkg].name })
-
+ # Output the package to the file only if its age is betwwen min and max
+ if (configParser.getMinAge() == None) and (configParser.getMaxAge() == None):
+ outputFile[catalog[pkg].tier].write("%(name)s\n" % { 'name' : catalog[pkg].name })
+ else:
+ # The filter can apply only if the age has been set
+ if (catalog[pkg].age != None):
+ if (configParser.getMinAge() == None) or ( (configParser.getMinAge() != None) and (catalog[pkg].age.days > configParser.getMinAge()) ):
+ if (configParser.getMaxAge() == None) or ( (configParser.getMaxAge() != None) and (catalog[pkg].age.days < configParser.getMaxAge()) ):
+ outputFile[catalog[pkg].tier].write("%(age)d\t%(name)s\n" % { 'name' : catalog[pkg].name , 'age' : catalog[pkg].age.days })
+
# Iterates the catalog to compute the tiering after rule propagation
countPkg[2][catalog[pkg].tier-1] += 1
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the devel
mailing list