Split out command line parsing
authorGuido Günther <agx@sigxcpu.org>
Sun, 6 Feb 2011 16:36:14 +0000 (17:36 +0100)
committerGuido Günther <agx@sigxcpu.org>
Wed, 9 Feb 2011 19:31:12 +0000 (20:31 +0100)
to honor pycheckers sensible request for smaller functions.

Git-Dch: Ignore

debian/rules
git-buildpackage
git-import-dsc
git-import-orig

index 034367a..b0c44e6 100755 (executable)
@@ -29,7 +29,7 @@ POD_MANPAGES=docs/git-pbuilder.1
 MANPAGES=$(SGML_MANPAGES) $(POD_MANPAGES)
 MANUAL=docs/manual-html
 PYCHECKS=$(patsubst %,%.py,$(COMMANDS))
-PYCHECKER_ARGS=--maxlines=300 --maxargs=12 -boptparse --no-override --no-shadowbuiltin
+PYCHECKER_ARGS=--maxlines=200 --maxargs=12 -boptparse --no-override --no-shadowbuiltin
 GBP_VERSION=gbp/gbp_version.py
 VERSION_ENT=docs/version.ent
 
index 8e8af02..d9bdfdf 100755 (executable)
@@ -216,12 +216,7 @@ def setup_pbuilder(options):
             os.environ['ARCH'] = options.pbuilder_arch
 
 
-def main(argv):
-    changelog = 'debian/changelog'
-    retval = 0
-    prefix = "git-"
-    cp = None
-
+def parse_args(argv, prefix):
     args = [ arg for arg in argv[1:] if arg.find('--%s' % prefix) == 0 ]
     dpkg_args = [ arg for arg in argv[1:] if arg.find('--%s' % prefix) == -1 ]
 
@@ -234,7 +229,7 @@ def main(argv):
         parser = GbpOptionParser(command=os.path.basename(argv[0]), prefix=prefix)
     except ConfigParser.ParsingError, err:
         gbp.log.err(err)
-        return 1
+        return None, None, None
 
     tag_group = GbpOptionGroup(parser, "tag options", "options related to git tag creation")
     branch_group = GbpOptionGroup(parser, "branch options", "branch layout options")
@@ -296,16 +291,30 @@ def main(argv):
     export_group.add_option("--git-dont-purge", action="store_false", dest="purge", default=True,
                       help="retain exported package build directory")
     export_group.add_boolean_config_file_option(option_name="overlay", dest="overlay")
-    (options, args) = parser.parse_args(args)
-    gbp.log.setup(options.color, options.verbose)
+    options, args = parser.parse_args(args)
 
+    gbp.log.setup(options.color, options.verbose)
     if options.retag:
         if not options.tag and not options.tag_only:
             gbp.log.err("'--%sretag' needs either '--%stag' or '--%stag-only'" % (prefix, prefix, prefix))
-            return 1
+            return None, None, None
 
     if options.overlay and not options.export_dir:
-        parser.error("Overlay must be used with --git-export-dir")
+        gbp.log.err("Overlay must be used with --git-export-dir")
+        return None, None, None
+
+    return options, args, dpkg_args
+
+
+def main(argv):
+    retval = 0
+    changelog = 'debian/changelog'
+    prefix = "git-"
+    cp = None
+
+    options, gbp_args, dpkg_args = parse_args(argv, prefix)
+    if not options:
+        return 1
 
     try:
         repo = GitRepository(os.path.curdir)
index 6503966..2a6ef00 100755 (executable)
@@ -148,19 +148,13 @@ def move_tag_stamp(repo, format, version):
     repo.move_tag(old, new)
 
 
-def main(argv):
-    dirs = dict(top=os.path.abspath(os.curdir))
-    needs_repo = False
-    ret = 0
-    skipped = False
-    parents = None
-
+def parse_args(argv):
     try:
         parser = GbpOptionParser(command=os.path.basename(argv[0]), prefix='',
                                  usage='%prog [options] /path/to/package.dsc')
     except ConfigParser.ParsingError, err:
         gbp.log.err(err)
-        return 1
+        return None, None
 
     import_group = GbpOptionGroup(parser, "import options",
                       "pristine-tar and filtering")
@@ -205,12 +199,23 @@ def main(argv):
 
     (options, args) = parser.parse_args(argv[1:])
     gbp.log.setup(options.color, options.verbose)
+    return options, args
+
+
+def main(argv):
+    dirs = dict(top=os.path.abspath(os.curdir))
+    needs_repo = False
+    ret = 0
+    skipped = False
+    parents = None
+
+    options, args = parse_args(argv)
 
     gitTag = gbpc.GitTag(options.sign_tags, options.keyid)
 
     try:
         if len(args) != 1:
-            parser.print_help()
+            gbp.log.err("Need to give exactly one package to import. Try --help.")
             raise GbpError
         else:
             pkg = args[0]
index c735783..391c5ee 100755 (executable)
@@ -175,17 +175,14 @@ def ask_package_version(default):
         # bit clearer.
         gbp.log.warn("\nNot a valid upstream version: '%s'.\n%s" % (version, upstreamversion_msg))
 
-def main(argv):
-    ret = 0
-    tmpdir = ''
-    pristine_orig = None
 
+def parse_args(argv):
     try:
         parser = GbpOptionParser(command=os.path.basename(argv[0]), prefix='',
                                  usage='%prog [options] /path/to/upstream-version.tar.gz | --uscan')
     except ConfigParser.ParsingError, err:
         gbp.log.err(err)
-        return 1
+        return None, None
 
     import_group = GbpOptionGroup(parser, "import options",
                       "pristine-tar and filtering")
@@ -248,7 +245,15 @@ def main(argv):
     if options.filters:
         turn_off_fastimport(options, "Import filters currently not supported with fastimport.")
 
+    return options, args
+
+
+def main(argv):
+    ret = 0
+    tmpdir = ''
+    pristine_orig = None
 
+    (options, args) = parse_args(argv)
 
     try:
         if options.uscan: # uscan mode
@@ -272,7 +277,7 @@ def main(argv):
 
         # tarball specified
         if len(args) != 1:
-            parser.print_help()
+            gbp.log.err("More than one tarball specified. Try --help.")
             raise GbpError
         else:
             archive = args[0]