]> 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 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']+'/tld-ftp-admin/modules')
6 import ftptree
7 from common import checkdir
8 import ftpio
9 from config import archived_trees, logs_list
10
11 if len(sys.argv) < 4:
12     print "ERR: not enough parameters given"
13     print "test-move.py src-tree dst-tree package [package2 package3 ...]"
14     sys.exit(1)
15
16 checkdir(sys.argv[1])
17 checkdir(sys.argv[2])
18
19 if sys.argv[2] in archived_trees:
20     archivetreename = ".archive/" + sys.argv[2]
21     checkdir(archivetreename)
22 else:
23     archivetreename = None
24
25 ftpio.connect('test-move')
26
27 if not ftpio.lock(sys.argv[1], True):
28     print "ERR: %s tree already locked" % sys.argv[1]
29     sys.exit(1)
30
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]
34     sys.exit(1)
35
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
40     sys.exit(1)
41
42 try:
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)
47     else:
48         archivetree = None
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)
57     sys.exit(1)
58
59 # We don't 'try' as in move.py cause this function doesn't force exit
60 srctree.testmove(dsttree, archivetree = archivetree)
61
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)