]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blame - bin/pfa-mvpkg
- formatting
[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 9from mailer import Message
9bf038aa 10import config.value as config
514f66ab 11
9bf038aa
ER
12nocheckbuild = False
13if len(sys.argv) > 4 and sys.argv[1] == '-nb':
14 nocheckbuild = True
15 sys.argv = sys.argv[1:]
f053c9e6
MM
16
17if len(sys.argv) < 4:
9bf038aa
ER
18 print >>sys.stderr, "ERR: not enough parameters given"
19 print >>sys.stderr, "move.py [options] src-tree dst-tree package [package2 package3 ...]"
20 print >>sys.stderr, "\nOptions:"
21 print >>sys.stderr, " -nb Do not check if builds are finished.\n"
514f66ab
MM
22 sys.exit(1)
23
6ebc8df7
MM
24checkdir(sys.argv[1])
25checkdir(sys.argv[2])
514f66ab 26
0a108b7f 27ftpio.connect('move')
514f66ab 28
0a108b7f 29if not ftpio.lock(sys.argv[1], True):
9bf038aa 30 print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[1]
0a108b7f
MM
31 sys.exit(1)
32
33if not ftpio.lock(sys.argv[2], True):
34 ftpio.unlock(sys.argv[1])
9bf038aa 35 print >>sys.stderr, "ERR: %s tree already locked" % sys.argv[2]
0a108b7f
MM
36 sys.exit(1)
37
38try:
9bf038aa
ER
39 srctree = ftptree.FtpTree(sys.argv[1], loadall = True)
40 dsttree = ftptree.FtpTree(sys.argv[2])
f053c9e6 41 if nocheckbuild:
9bf038aa 42 srctree.do_checkbuild = False
0a108b7f
MM
43 srctree.mark4moving(sys.argv[3:])
44
45 srctree.movepkgs(dsttree)
46except ftptree.SomeError:
f053c9e6 47 # In case of problems we need to unlock the trees before exiting
0a108b7f
MM
48 ftpio.unlock(sys.argv[1])
49 ftpio.unlock(sys.argv[2])
50 sys.exit(1)
51
52ftpio.unlock(sys.argv[1])
53ftpio.unlock(sys.argv[2])
514f66ab 54
9bf038aa 55if 'logs_list' not in config:
81fdf589
MM
56 sys.exit(0)
57
58print 'Sending mail notification...',
59
9bf038aa 60pkgs = {}
81fdf589
MM
61
62for pkg in srctree.marked4moving:
9bf038aa 63 requesters = []
81fdf589
MM
64 for bid in pkg.build.keys():
65 if pkg.build[bid].requester not in requesters:
66 requesters.append(pkg.build[bid].requester)
9bf038aa
ER
67 pkgs[pkg.nvr] = requesters
68
69m = Message()
70m.set_headers(
71 to = config['logs_list'],
72 subject = 'MOVED: %s => %s... %d packages' % (sys.argv[1], sys.argv[2], len(pkgs))
73)
74m.write(
75 (
76 'SrcTree: %s DstTree: %s\n' +
77 'Amount: %d\n\n---- Moved:\n\n'
78 ) % (sys.argv[1], sys.argv[2], len(pkgs))
79)
81fdf589 80
85f3481a
MM
81for nvr in sorted(pkgs.keys()):
82 m.write_line('%s ---- %s' % (nvr, ', '.join(pkgs[nvr])))
81fdf589
MM
83
84m.send()
85
86print 'done.'
This page took 0.042787 seconds and 4 git commands to generate.