]> TLD Linux GIT Repositories - tld-ftp-admin.git/blob - bin/pfa-testmvpkg
- non-integer releases are ok in TLD
[tld-ftp-admin.git] / bin / pfa-testmvpkg
1 #!/usr/bin/env python3
2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
3
4 from __future__ import print_function
5
6 import sys, os
7 sys.path.insert(0, os.environ['HOME']+'/tld-ftp-admin/modules')
8 import ftptree
9 from common import checkdir
10 import ftpio
11 from config import archived_trees, logs_list
12
13 if len(sys.argv) < 4:
14     print("ERR: not enough parameters given")
15     print("test-move.py src-tree dst-tree package [package2 package3 ...]")
16     sys.exit(1)
17
18 checkdir(sys.argv[1])
19 checkdir(sys.argv[2])
20
21 if sys.argv[2] in archived_trees:
22     archivetreename = ".archive/" + sys.argv[2]
23     checkdir(archivetreename)
24 else:
25     archivetreename = None
26
27 ftpio.connect('test-move')
28
29 if not ftpio.lock(sys.argv[1], True):
30     print("ERR: %s tree already locked" % sys.argv[1])
31     sys.exit(1)
32
33 if not ftpio.lock(sys.argv[2], True):
34     ftpio.unlock(sys.argv[1])
35     print("ERR: %s tree already locked" % sys.argv[2])
36     sys.exit(1)
37
38 if archivetreename != None and archivetreename != sys.argv[1] and not ftpio.lock(archivetreename, True):
39     ftpio.unlock(sys.argv[2])
40     ftpio.unlock(sys.argv[1])
41     print("ERR: %s tree already locked" % archivetreename)
42     sys.exit(1)
43
44 try:
45     srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
46     dsttree = ftptree.FtpTree(sys.argv[2])
47     if archivetreename != None:
48         archivetree = ftptree.FtpTree(archivetreename)
49     else:
50         archivetree = None
51     pkgs = list(set(sys.argv[3:]))
52     srctree.mark4moving(pkgs)
53 except ftptree.SomeError:
54     # In case of problems we need to unlock the trees before exiting
55     ftpio.unlock(sys.argv[1])
56     ftpio.unlock(sys.argv[2])
57     if archivetreename != None:
58         ftpio.unlock(archivetreename)
59     sys.exit(1)
60
61 # We don't 'try' as in move.py cause this function doesn't force exit
62 srctree.testmove(dsttree, archivetree = archivetree)
63
64 ftpio.unlock(sys.argv[1])
65 ftpio.unlock(sys.argv[2])
66 if archivetreename != None and archivetreename != sys.argv[1]:
67     ftpio.unlock(archivetreename)