# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
import sys, os
+import getopt
sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
import ftptree
import getpass
from config import sign_key
from sign import is_signed, signpkgs
-if len(sys.argv) < 3:
- print >>sys.stderr, "ERR: not enough parameters given"
+try:
+ opts, args = getopt.getopt(sys.argv[1:], '')
+except getopt.GetoptError:
+ print >>sys.stderr, "ERR: options error"
+ print >>sys.stderr, "sign.py tree package1 [package2...]"
+ sys.exit(1)
+
+if len(args) < 1:
+ print >>sys.stderr, "ERR: missing tree name"
print >>sys.stderr, "sign.py tree package1 [package2...]"
sys.exit(1)
print >>sys.stderr, "ERR: sign_key not defined in config"
sys.exit(1)
-checkdir(sys.argv[1])
+treename = args[0]
+packages = args[1:]
+
+checkdir(treename)
ftpio.connect('sign')
-if not ftpio.lock(sys.argv[1], True):
- print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[1]
+if not ftpio.lock(treename, True):
+ print >>sys.stderr, "ERR: %s tree already locked" % treename
sys.exit(1)
files = []
try:
- tree = ftptree.FtpTree(sys.argv[1])
- tree.mark4moving(sys.argv[2:])
+ if len(packages) < 1:
+ loadall = True
+ else:
+ loadall = False
+
+ # if no files specified, grab whole tree contents
+ tree = ftptree.FtpTree(treename, loadall = loadall)
+ if loadall:
+ # this is hack, should be a param, not access private .loadedpkgs element
+ tree.mark4moving(tree.loadedpkgs)
+ else:
+ tree.mark4moving(packages)
files = tree.rpmfiles()
except ftptree.SomeError:
# In case of problems we need to unlock the tree before exiting
- ftpio.unlock(sys.argv[1])
+ ftpio.unlock(treename)
sys.exit(1)
-ftpio.unlock(sys.argv[1])
+ftpio.unlock(treename)
print "Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs))
sign = []