Change to project/trunk,tags,branches style
This commit is contained in:
Executable
+103
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2005, 2006 TUBITAK/UEKAE
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# Please read the COPYING file.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import glob
|
||||
import string
|
||||
import shutil
|
||||
import pisi.util as util
|
||||
from pisi.version import Version
|
||||
|
||||
def findUnneededFiles(listdir):
|
||||
dict = {}
|
||||
for f in listdir:
|
||||
try:
|
||||
name, version = util.parse_package_name(f)
|
||||
if dict.has_key(name):
|
||||
if Version(dict[name]) < Version(version):
|
||||
dict[name] = version
|
||||
else:
|
||||
if version:
|
||||
dict[name] = version
|
||||
|
||||
except:
|
||||
pass
|
||||
|
||||
for f in dict:
|
||||
listdir.remove("%s-%s" % (f, dict[f]))
|
||||
|
||||
return listdir
|
||||
|
||||
def doit(root, listdir, clean, suffix = ""):
|
||||
for f in listdir:
|
||||
target = os.path.join(root, "%s%s" % (f, suffix))
|
||||
if os.path.exists(target):
|
||||
print "%s%s" % (f, suffix)
|
||||
if clean == True:
|
||||
try:
|
||||
if os.path.isdir(target):
|
||||
shutil.rmtree(target)
|
||||
else:
|
||||
os.remove(target)
|
||||
except OSError,e :
|
||||
usage("Permission denied: %s" % e)
|
||||
|
||||
|
||||
def cleanPisis(clean, root = '/var/cache/pisi/packages'):
|
||||
# pisi packages
|
||||
list = map(lambda x: os.path.basename(x).split(".pisi")[0], glob.glob("%s/*.pisi" % root))
|
||||
list.sort()
|
||||
l = findUnneededFiles(list)
|
||||
doit(root, l, clean, ".pisi")
|
||||
|
||||
def cleanBuilds(clean, root = '/var/pisi'):
|
||||
# Build remnant
|
||||
list = []
|
||||
for f in os.listdir(root):
|
||||
if os.path.isdir(os.path.join(root, f)):
|
||||
list.append(f)
|
||||
|
||||
l = findUnneededFiles(list)
|
||||
doit(root, l, clean)
|
||||
|
||||
def usage(msg):
|
||||
print """
|
||||
Error: %s
|
||||
|
||||
Usage:
|
||||
cleanCache --dry-run (Shows unneeded files)
|
||||
cleanCache --clean (Removes unneeded files)
|
||||
""" % msg
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
sys.argv[1]
|
||||
except IndexError:
|
||||
usage("Unsufficient arguments...")
|
||||
|
||||
if "--dry-run" in sys.argv:
|
||||
clean = False
|
||||
elif "--clean" in sys.argv:
|
||||
clean = True
|
||||
else:
|
||||
usage("No command given...")
|
||||
sys.exit(0)
|
||||
|
||||
if "builds" in sys.argv:
|
||||
cleanBuilds(clean)
|
||||
|
||||
else:
|
||||
cleanPisis(clean)
|
||||
|
||||
Reference in New Issue
Block a user