diff --git a/urpm-repomanage.py b/urpm-repomanage.py index b8c8d30..6137434 100755 --- a/urpm-repomanage.py +++ b/urpm-repomanage.py @@ -99,6 +99,8 @@ def parseargs(args): help=_('report obsolete packages')) parser.add_argument("-r", "--remove-old", default=False, action="store_true", help=_('remove older packages')) + parser.add_argument("-l", "--leave-oldest", default=False, action="store_true", + help=_('leave only the oldest version of every package')) parser.add_argument("-s", "--space", default=False, action="store_true", help=_('space separated output, not newline')) parser.add_argument("-k", "--keep", default=1, dest='keep', action="store", @@ -257,6 +259,11 @@ def main(args): newevrs = evrlist[keepnum:] if len(evrlist[:keepnum]) > 0: old_found = 1 + if options.leave_oldest: + for dropped in evrlist[1:]: + (e,v,r,d) = dropped + pkg = str(verfile[(n,a,e,v,r,d)]).replace("['","").replace("']","") + subprocess.call(["rm", "-f", pkg]) if options.remove_old: for dropped in evrlist[:keepnum]: (e,v,r,d) = dropped @@ -285,6 +292,11 @@ def main(args): oldevrs = evrlist[:keepnum] if len(oldevrs) > 0: old_found = 1 + if options.leave_oldest: + for dropped in evrlist[1:]: + (e,v,r,d) = dropped + pkg = str(verfile[(n,a,e,v,r,d)]).replace("['","").replace("']","") + subprocess.call(["rm", "-f", pkg]) for (e,v,r,d) in oldevrs: for pkg in verfile[(n,a,e,v,r,d)]: outputpackages.append(pkg)