]>
Commit | Line | Data |
---|---|---|
a1e62e44 | 1 | #!/usr/bin/env python3 |
9b00920e MM |
2 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et |
3 | ||
2ec96333 JR |
4 | from __future__ import print_function |
5 | ||
9b00920e MM |
6 | import sys, os |
7 | sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules') | |
492b6398 | 8 | import ftptree |
9b00920e | 9 | from common import checkdir |
0a108b7f | 10 | import ftpio |
213a164a | 11 | from config import archived_trees, logs_list |
9b00920e | 12 | |
f053c9e6 | 13 | if len(sys.argv) < 4: |
2ec96333 JR |
14 | print("ERR: not enough parameters given") |
15 | print("test-move.py src-tree dst-tree package [package2 package3 ...]") | |
9b00920e MM |
16 | sys.exit(1) |
17 | ||
18 | checkdir(sys.argv[1]) | |
19 | checkdir(sys.argv[2]) | |
20 | ||
213a164a ER |
21 | if sys.argv[2] in archived_trees: |
22 | archivetreename = ".archive/" + sys.argv[2] | |
23 | checkdir(archivetreename) | |
24 | else: | |
25 | archivetreename = None | |
26 | ||
0a108b7f MM |
27 | ftpio.connect('test-move') |
28 | ||
29 | if not ftpio.lock(sys.argv[1], True): | |
2ec96333 | 30 | print("ERR: %s tree already locked" % sys.argv[1]) |
0a108b7f MM |
31 | sys.exit(1) |
32 | ||
33 | if not ftpio.lock(sys.argv[2], True): | |
34 | ftpio.unlock(sys.argv[1]) | |
2ec96333 | 35 | print("ERR: %s tree already locked" % sys.argv[2]) |
0a108b7f MM |
36 | sys.exit(1) |
37 | ||
213a164a ER |
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]) | |
2ec96333 | 41 | print("ERR: %s tree already locked" % archivetreename) |
213a164a ER |
42 | sys.exit(1) |
43 | ||
492b6398 | 44 | try: |
8911f226 ER |
45 | srctree = ftptree.FtpTree(sys.argv[1], loadall = True) |
46 | dsttree = ftptree.FtpTree(sys.argv[2]) | |
213a164a ER |
47 | if archivetreename != None: |
48 | archivetree = ftptree.FtpTree(archivetreename) | |
49 | else: | |
50 | archivetree = None | |
f1d0a922 AM |
51 | pkgs = list(set(sys.argv[3:])) |
52 | srctree.mark4moving(pkgs) | |
492b6398 MM |
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]) | |
213a164a ER |
57 | if archivetreename != None: |
58 | ftpio.unlock(archivetreename) | |
492b6398 | 59 | sys.exit(1) |
9b00920e | 60 | |
492b6398 | 61 | # We don't 'try' as in move.py cause this function doesn't force exit |
213a164a | 62 | srctree.testmove(dsttree, archivetree = archivetree) |
9b00920e | 63 | |
0a108b7f MM |
64 | ftpio.unlock(sys.argv[1]) |
65 | ftpio.unlock(sys.argv[2]) | |
213a164a ER |
66 | if archivetreename != None and archivetreename != sys.argv[1]: |
67 | ftpio.unlock(archivetreename) |