]>
Commit | Line | Data |
---|---|---|
f56d33c5 ER |
1 | #!/usr/bin/env python |
2 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et | |
3 | ||
4 | import sys, os | |
5 | sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules') | |
6 | import ftptree | |
7 | from common import checkdir | |
8 | import ftpio | |
55bd5397 | 9 | from config import sign_key |
42c96205 | 10 | from sign import is_signed, signpkgs |
f56d33c5 ER |
11 | |
12 | if len(sys.argv) < 3: | |
55bd5397 ER |
13 | print >>sys.stderr, "ERR: not enough parameters given" |
14 | print >>sys.stderr, "sign.py tree package1 [package2...]" | |
15 | sys.exit(1) | |
16 | ||
17 | if sign_key == None: | |
18 | print >>sys.stderr, "ERR: sign_key not defined in config" | |
f56d33c5 ER |
19 | sys.exit(1) |
20 | ||
21 | checkdir(sys.argv[1]) | |
22 | ||
23 | ftpio.connect('sign') | |
24 | ||
25 | if not ftpio.lock(sys.argv[1], True): | |
4e83e214 | 26 | print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[1] |
f56d33c5 ER |
27 | sys.exit(1) |
28 | ||
42c96205 | 29 | files = [] |
f56d33c5 | 30 | try: |
42c96205 | 31 | tree = ftptree.FtpTree(sys.argv[1]) |
55bd5397 ER |
32 | tree.mark4moving(sys.argv[2:]) |
33 | files = tree.rpmfiles() | |
34 | ||
f56d33c5 ER |
35 | except ftptree.SomeError: |
36 | # In case of problems we need to unlock the tree before exiting | |
37 | ftpio.unlock(sys.argv[1]) | |
38 | sys.exit(1) | |
39 | ||
40 | ftpio.unlock(sys.argv[1]) | |
42c96205 ER |
41 | |
42 | print "Checking signatures of %d files from %d packages" % (len(files), len(tree.loadedpkgs)) | |
43 | sign = [] | |
44 | for file in files: | |
45 | if not is_signed(file): | |
46 | sign.append(file) | |
47 | ||
48 | if len(sign) == 0: | |
4e15eddf | 49 | print "No files to sign" |
42c96205 ER |
50 | sys.exit(0) |
51 | ||
52 | print "Signing %d files" % len(sign) | |
4e83e214 ER |
53 | try: |
54 | signpkgs(sign) | |
55 | except OSError, e: | |
56 | print >>sys.stderr, "ERR: %s" % e | |
57 | exit(1) |