aboutsummaryrefslogtreecommitdiffstats
path: root/RepSys/commands/getsrpm.py
diff options
context:
space:
mode:
Diffstat (limited to 'RepSys/commands/getsrpm.py')
-rw-r--r--RepSys/commands/getsrpm.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/RepSys/commands/getsrpm.py b/RepSys/commands/getsrpm.py
new file mode 100644
index 0000000..f2def54
--- /dev/null
+++ b/RepSys/commands/getsrpm.py
@@ -0,0 +1,76 @@
+#!/usr/bin/python
+#
+# This program will extract given version/revision of the named package
+# from the Conectiva Linux repository system.
+#
+from RepSys import Error, config
+from RepSys.command import *
+from RepSys.rpmutil import get_srpm
+import tempfile
+import shutil
+import getopt
+import glob
+import sys
+import os
+
+HELP = """\
+Usage: repsys getsrpm [OPTIONS] REPPKGURL
+
+Options:
+ -c Use files in current/ directory (default)
+ -p Use files in pristine/ directory
+ -v VER Use files from the version specified by VER (e.g. 2.2.1-2cl)
+ -r REV Use files from current directory, in revision REV (e.g. 1001)
+ -t DIR Put SRPM file in directory DIR when done (default is ".")
+ -P USER Define the RPM packager inforamtion to USER
+ -s FILE Run script with "FILE TOPDIR SPECFILE" command
+ -n Rename the package to include the revision number
+ -l Use subversion log to build rpm %changelog
+ -h Show this message
+
+Examples:
+ repsys getsrpm http://foo.bar/svn/cnc/snapshot/python
+ repsys getsrpm -p http://foo.bar/svn/cnc/releases/8cl/python
+ repsys getsrpm -r 1001 file:///svn/cnc/snapshot/python
+"""
+
+def mode_callback(option, opt, val, parser, mode):
+ opts = parser.values
+ opts.mode = mode
+ if mode == "version":
+ try:
+ opts.version, opts.release = val.split("-", 1)
+ except ValueError:
+ raise Error, "wrong version, use something like 2.2-1cl"
+ elif mode == "revision":
+ opts.revision = val
+
+def parse_options():
+ parser = OptionParser(help=HELP)
+ parser.defaults["mode"] = "current"
+ parser.defaults["version"] = None
+ parser.defaults["release"] = None
+ parser.defaults["revision"] = None
+ parser.add_option("-c", action="callback", callback=mode_callback,
+ callback_kwargs={"mode": "current"})
+ parser.add_option("-p", action="callback", callback=mode_callback,
+ callback_kwargs={"mode": "pristine"})
+ parser.add_option("-r", action="callback", callback=mode_callback,
+ callback_kwargs={"mode": "revision"})
+ parser.add_option("-v", action="callback", callback=mode_callback,
+ callback_kwargs={"mode": "version"})
+ parser.add_option("-t", dest="targetdirs", action="append", default=[])
+ parser.add_option("-s", dest="scripts", action="append", default=[])
+ parser.add_option("-P", dest="packager", default="")
+ parser.add_option("-n", dest="revname", action="store_true")
+ parser.add_option("-l", dest="svnlog", action="store_true")
+ opts, args = parser.parse_args()
+ if len(args) != 1:
+ raise Error, "invalid arguments"
+ opts.pkgdirurl = default_parent(args[0])
+ return opts
+
+def main():
+ do_command(parse_options, get_srpm)
+
+# vim:et:ts=4:sw=4