]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blob - bin/pfa-mvpkg
- let's be a little more legible
[projects/pld-ftp-admin.git] / bin / pfa-mvpkg
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']+'/pld-ftp-admin/modules')
6 import ftptree
7 from common import checkdir
8 import ftpio
9 from mailer import Message
10 import config
11 cval=config.value
12
13 nocheckbuild=False
14 if len(sys.argv) > 4 and sys.argv[1]=='-nb':
15     nocheckbuild=True
16     sys.argv=sys.argv[1:]
17
18 if len(sys.argv) < 4:
19     print "Not enough parameters given"
20     print "move.py [options] src-tree dst-tree package [package2 package3 ...]"
21     print "\nOptions:"
22     print "      -nb    Do not check if builds are finished.\n"
23     sys.exit(1)
24
25 checkdir(sys.argv[1])
26 checkdir(sys.argv[2])
27
28 ftpio.connect('move')
29
30 if not ftpio.lock(sys.argv[1], True):
31     print "%s tree already locked" % sys.argv[1]
32     sys.exit(1)
33
34 if not ftpio.lock(sys.argv[2], True):
35     ftpio.unlock(sys.argv[1])
36     print "%s tree already locked" % sys.argv[2]
37     sys.exit(1)
38
39 try:
40     srctree=ftptree.FtpTree(sys.argv[1], loadall=True)
41     dsttree=ftptree.FtpTree(sys.argv[2])
42     if nocheckbuild:
43         srctree.do_checkbuild=False
44     srctree.mark4moving(sys.argv[3:])
45
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])
51     sys.exit(1)
52
53 ftpio.unlock(sys.argv[1])
54 ftpio.unlock(sys.argv[2])
55
56 if 'logs_list' not in cval:
57     sys.exit(0)
58
59 print 'Sending mail notification...',
60
61 pkgs={}
62
63 for pkg in srctree.marked4moving:
64     requesters=[]
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
69
70 m=Message()
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)))
75
76 for name in sorted(pkgs.keys()):
77     m.write_line('%s ---- %s' % (name, ', '.join(pkgs[name])))
78
79 m.send()
80
81 print 'done.'
82
This page took 0.089612 seconds and 3 git commands to generate.