source: soft/build_system/build_system/repsys/tags/V1_6_2/create-srpm @ 1

Last change on this file since 1 was 1, checked in by fasma, 13 years ago

Initial Import from Mandriva's soft revision 224062 and package revision 45733

File size: 2.7 KB
Line 
1#!/usr/bin/python
2
3from RepSys import Error, config
4from RepSys.rpmutil import get_srpm
5from RepSys.cgiutil import get_targets
6from RepSys.util import mapurl
7import sys
8import os
9import pwd
10import optparse
11
12class CmdError(Error): pass
13
14class CmdIface:
15    def author_email(self, author):
16        return config.get("users", author)
17
18    def submit_package(self, packageurl, packagerev, targetname, 
19            dontmapurl_=0):
20        pw = pwd.getpwuid(os.getuid())
21        username = pw[0]
22        packager = config.get("users", username) or pw[4]
23        if not packager:
24            raise CmdError, "your email was not found"
25        elif not packagerev:
26            raise CmdError, "no revision provided"
27        elif not targetname:
28            raise CmdError, "no target provided"
29        else:
30            targetname = targetname.lower()
31            for target in get_targets():
32                if target.name.lower() == targetname:
33                    break
34            else:
35                raise CmdError, "target not found"
36            try:
37                tmp = int(packagerev)
38            except ValueError:
39                raise CmdError, "invalid revision provided"
40            for allowed in target.allowed:
41                if packageurl.startswith(allowed):
42                    break
43            else:
44                raise CmdError, "%s is not allowed for this target" \
45                                % packageurl
46            newurl = packageurl
47            if not dontmapurl_:
48                newurl = mapurl(packageurl)
49            get_srpm(newurl,
50                     revision=packagerev,
51                     targetdirs=target.target,
52                     packager=packager,
53                     revname=1,
54                     svnlog=1,
55                     scripts=target.scripts)
56        return 1
57
58    def submit_targets(self):
59        return [x.name for x in get_targets()]
60
61
62def parse_options():
63    usage = "create-srpm <packageurl> -t <target> [-r <revision>]"
64    parser = optparse.OptionParser(usage=usage)
65    parser.add_option("-r", "--revision", dest="revision", type="string",
66                      help="the revision number")
67    parser.add_option("-t", "--target", type="string", dest="target",
68                      help="target name")
69    parser.add_option("-M", "--nomapping", action="store_true",
70                      dest="urlmap", default=False, 
71                      help="disable url mapping")
72    opts, args = parser.parse_args()
73    if not args:
74        parser.error("you must supply a package url")
75    return opts, args
76
77
78def main():
79    iface = CmdIface()
80    opts, args = parse_options()
81    iface.submit_package(args[0], opts.revision, opts.target, opts.urlmap)
82   
83
84if __name__ == "__main__":
85    main()
86
87# vim:ts=4:sw=4:et
Note: See TracBrowser for help on using the repository browser.