2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
4 from __future__ import print_function
7 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
9 from common import checkdir
11 from config import archived_trees, logs_list
14 print("ERR: not enough parameters given")
15 print("test-move.py src-tree dst-tree package [package2 package3 ...]")
21 if sys.argv[2] in archived_trees:
22 archivetreename = ".archive/" + sys.argv[2]
23 checkdir(archivetreename)
25 archivetreename = None
27 ftpio.connect('test-move')
29 if not ftpio.lock(sys.argv[1], True):
30 print("ERR: %s tree already locked" % sys.argv[1])
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])
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)
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)
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)
61 # We don't 'try' as in move.py cause this function doesn't force exit
62 srctree.testmove(dsttree, archivetree = archivetree)
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)