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 mailer import Message
14 if len(sys.argv) > 4 and sys.argv[1]=='-nb':
19 print "Not enough parameters given"
20 print "move.py [options] src-tree dst-tree package [package2 package3 ...]"
22 print " -nb Do not check if builds are finished.\n"
30 if not ftpio.lock(sys.argv[1], True):
31 print "%s tree already locked" % sys.argv[1]
34 if not ftpio.lock(sys.argv[2], True):
35 ftpio.unlock(sys.argv[1])
36 print "%s tree already locked" % sys.argv[2]
40 srctree=ftptree.FtpTree(sys.argv[1], loadall=True)
41 dsttree=ftptree.FtpTree(sys.argv[2])
43 srctree.do_checkbuild=False
44 srctree.mark4moving(sys.argv[3:])
46 srctree.movepkgs(dsttree)
47 except ftptree.SomeError:
48 # In case of problems we need to unlock the trees before exiting
49 ftpio.unlock(sys.argv[1])
50 ftpio.unlock(sys.argv[2])
53 ftpio.unlock(sys.argv[1])
54 ftpio.unlock(sys.argv[2])
56 if 'logs_list' not in cval:
59 print 'Sending mail notification...',
63 for pkg in srctree.marked4moving:
65 for bid in pkg.build.keys():
66 if pkg.build[bid].requester not in requesters:
67 requesters.append(pkg.build[bid].requester)
68 pkgs[pkg.name]=requesters
71 m.set_headers(to=cval['logs_list'], subject='MOVED: %s => %s... %d packages' %
72 (sys.argv[1], sys.argv[2], len(pkgs)))
73 m.write(('SrcTree: %s DstTree: %s\n' +
74 'Amount: %d\n\n---- Moved:\n\n') % (sys.argv[1], sys.argv[2], len(pkgs)))
76 for name in sorted(pkgs.keys()):
77 m.write_line('%s ---- %s' % (name, ', '.join(pkgs[name])))