2 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
5 sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
7 from common import checkdir
9 from config import archived_trees, logs_list
12 print "ERR: not enough parameters given"
13 print "test-move.py src-tree dst-tree package [package2 package3 ...]"
19 if sys.argv[2] in archived_trees:
20 archivetreename = ".archive/" + sys.argv[2]
21 checkdir(archivetreename)
23 archivetreename = None
25 ftpio.connect('test-move')
27 if not ftpio.lock(sys.argv[1], True):
28 print "ERR: %s tree already locked" % sys.argv[1]
31 if not ftpio.lock(sys.argv[2], True):
32 ftpio.unlock(sys.argv[1])
33 print "ERR: %s tree already locked" % sys.argv[2]
36 if archivetreename != None and archivetreename != sys.argv[1] and not ftpio.lock(archivetreename, True):
37 ftpio.unlock(sys.argv[2])
38 ftpio.unlock(sys.argv[1])
39 print "ERR: %s tree already locked" % archivetreename
43 srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
44 dsttree = ftptree.FtpTree(sys.argv[2])
45 if archivetreename != None:
46 archivetree = ftptree.FtpTree(archivetreename)
49 pkgs = list(set(sys.argv[3:]))
50 srctree.mark4moving(pkgs)
51 except ftptree.SomeError:
52 # In case of problems we need to unlock the trees before exiting
53 ftpio.unlock(sys.argv[1])
54 ftpio.unlock(sys.argv[2])
55 if archivetreename != None:
56 ftpio.unlock(archivetreename)
59 # We don't 'try' as in move.py cause this function doesn't force exit
60 srctree.testmove(dsttree, archivetree = archivetree)
62 ftpio.unlock(sys.argv[1])
63 ftpio.unlock(sys.argv[2])
64 if archivetreename != None and archivetreename != sys.argv[1]:
65 ftpio.unlock(archivetreename)