]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blobdiff - bin/pfa-signpkg
Switch to Python 3 for rpm.org rpm
[projects/pld-ftp-admin.git] / bin / pfa-signpkg
old mode 100644 (file)
new mode 100755 (executable)
index d900386..beff543
@@ -1,45 +1,71 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
+from __future__ import print_function
+
 import sys, os
+import getopt
 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
 import ftptree
+import getpass
 from common import checkdir
 import ftpio
 from config import sign_key
 from sign import is_signed, signpkgs
 
-if len(sys.argv) < 3:
-    print >>sys.stderr, "ERR: not enough parameters given"
-    print >>sys.stderr, "sign.py tree package1 [package2...]"
+os.umask(0o022)
+
+try:
+    opts, args = getopt.getopt(sys.argv[1:], '')
+except getopt.GetoptError:
+    print("ERR: options error", file=sys.stderr)
+    print("sign.py tree package1 [package2...]", file=sys.stderr)
+    sys.exit(1)
+
+if len(args) < 1:
+    print("ERR: missing tree name", file=sys.stderr)
+    print("sign.py tree package1 [package2...]", file=sys.stderr)
     sys.exit(1)
 
 if sign_key == None:
-    print >>sys.stderr, "ERR: sign_key not defined in config"
+    print("ERR: sign_key not defined in config", file=sys.stderr)
     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("ERR: %s tree already locked" % treename, file=sys.stderr)
     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))
+print("Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs)))
 sign = []
 n = c = 0
 for file in files:
@@ -47,12 +73,12 @@ for file in files:
         sign.append(file)
         c += 1
     n += 1
-    print "\r%d/%d %s\033[0K" % (n, c, file),
+    print("\r%d/%d %s\033[0K" % (n, c, file), end='')
 
-print ""
+print()
 
 if len(sign) == 0:
-    print "No files to sign"
+    print("No files to sign")
     sys.exit(0)
 
 # http://mail.python.org/pipermail/python-list/2009-February/700658.html
@@ -71,21 +97,22 @@ def chunk(seq, size, pad=None):
      [[1], [2], [3], [4], [5], [6], [7], [8], [9]]
      >>> list(chunk(range(1,10),9))
      [[1, 2, 3, 4, 5, 6, 7, 8, 9]]
-     >>> for X in chunk([],3): print X
+     >>> for X in chunk([],3): print(X)
      >>>
      '''
      n = len(seq)
      mod = n % size
-     for i in xrange(0, n - mod, size):
+     for i in range(0, n - mod, size):
          yield seq[i : i + size]
      if mod:
          yield seq[-mod:]
 
-print "Total %d files to sign" % len(sign)
+print("Total %d files to sign" % len(sign))
+password = getpass.getpass("Enter signing password: ")
 try:
     for x in chunk(sign, 512):
-        print "Signing %d files" % len(x)
-        signpkgs(x)
-except OSError, e:
-    print >>sys.stderr, "ERR: %s" % e
+        print("Signing %d files" % len(x))
+        signpkgs(x, password)
+except OSError as e:
+    print("ERR: %s" % e, file=sys.stderr)
     exit(1)
This page took 0.944313 seconds and 4 git commands to generate.