]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blame - bin/pfa-mvpkg
- fixed a bug in remove.py and did some rearrangements in ftptree.py, since
[projects/pld-ftp-admin.git] / bin / pfa-mvpkg
CommitLineData
514f66ab
MM
1#!/usr/bin/env python
2# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
3
6ebc8df7 4import sys, os
2f949c90 5sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
f053c9e6 6import ftptree
6ebc8df7 7from common import checkdir
5959a5e8 8import ftpio
81fdf589
MM
9from mailer import Message
10import config
11cval=config.value
514f66ab 12
f053c9e6
MM
13nocheckbuild=False
14if len(sys.argv) > 4 and sys.argv[1]=='-nb':
15 nocheckbuild=True
16 sys.argv=sys.argv[1:]
17
18if len(sys.argv) < 4:
749b120d 19 print "ERR: not enough parameters given"
f053c9e6
MM
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"
514f66ab
MM
23 sys.exit(1)
24
6ebc8df7
MM
25checkdir(sys.argv[1])
26checkdir(sys.argv[2])
514f66ab 27
0a108b7f 28ftpio.connect('move')
514f66ab 29
0a108b7f 30if not ftpio.lock(sys.argv[1], True):
749b120d 31 print "ERR: %s tree already locked" % sys.argv[1]
0a108b7f
MM
32 sys.exit(1)
33
34if not ftpio.lock(sys.argv[2], True):
35 ftpio.unlock(sys.argv[1])
749b120d 36 print "ERR: %s tree already locked" % sys.argv[2]
0a108b7f
MM
37 sys.exit(1)
38
39try:
f053c9e6
MM
40 srctree=ftptree.FtpTree(sys.argv[1], loadall=True)
41 dsttree=ftptree.FtpTree(sys.argv[2])
42 if nocheckbuild:
43 srctree.do_checkbuild=False
0a108b7f
MM
44 srctree.mark4moving(sys.argv[3:])
45
46 srctree.movepkgs(dsttree)
47except ftptree.SomeError:
f053c9e6 48 # In case of problems we need to unlock the trees before exiting
0a108b7f
MM
49 ftpio.unlock(sys.argv[1])
50 ftpio.unlock(sys.argv[2])
51 sys.exit(1)
52
53ftpio.unlock(sys.argv[1])
54ftpio.unlock(sys.argv[2])
514f66ab 55
81fdf589
MM
56if 'logs_list' not in cval:
57 sys.exit(0)
58
59print 'Sending mail notification...',
60
61pkgs={}
62
63for 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
70m=Message()
71m.set_headers(to=cval['logs_list'], subject='MOVED: %s => %s... %d packages' %
72 (sys.argv[1], sys.argv[2], len(pkgs)))
73m.write(('SrcTree: %s DstTree: %s\n' +
74 'Amount: %d\n\n---- Moved:\n\n') % (sys.argv[1], sys.argv[2], len(pkgs)))
75
76for name in sorted(pkgs.keys()):
dfba25e5 77 m.write_line('%s ---- %s' % (name, ', '.join(pkgs[name])))
81fdf589
MM
78
79m.send()
80
81print 'done.'
82
This page took 0.051911 seconds and 4 git commands to generate.