[projects/git-slug: 6/170] Options parser for git like syntax

glen glen at pld-linux.org
Mon Sep 21 21:39:19 CEST 2015


commit 5cef5c731fd97ffec4144ceba067ced2ee21a6de
Author: Kacper Kornet <draenog at pld-linux.org>
Date:   Sat Sep 10 05:46:37 2011 +0100

    Options parser for git like syntax
    
    The alternative syntax suggested by arekm:
        slug.py {fetch,init} [options] [arguments]

 slug.py | 37 ++++++++++++++++++++++++++-----------
 1 file changed, 26 insertions(+), 11 deletions(-)
---
diff --git a/slug.py b/slug.py
index f72128e..5dc99ef 100755
--- a/slug.py
+++ b/slug.py
@@ -106,19 +106,34 @@ def fetch_packages(options):
                 shutil.rmtree(fulldir)
 
 
+common_options = argparse.ArgumentParser(add_help=False)
+common_options.add_argument('-d', '--packagesdir', help='local directory with git repositories',
+    default=os.path.join(os.getenv('HOME'),'PLD_clone/packages'))
+common_options.add_argument('-u', '--user',
+        help='the user name to register for pushes for new repositories',
+        default = get_user())
+
 parser = argparse.ArgumentParser(description='PLD tool for interaction with git repos',
         formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-parser.add_argument('-b', '--branch', help='branch to fetch', default = 'master')
-parser.add_argument('-P', '--prune', help='prune git repositories that do no exist upstream', action='store_true')
-parser.add_argument('-j', help='number of threads to use', default=4, type=int)
-parser.add_argument('-d', '--packagesdir', help='local directory with git repositories',
-        default=os.path.join(os.getenv('HOME'),'PLD_clone/packages'))
-parser.add_argument('--depth', help='depth of fetch', default=0)
-parser.add_argument('-n', '--newpkgs', help='download packages that do not exist on local side', action='store_true')
-parser.add_argument('-r', '--remoterefs', help='repository with list of all refs',
-        default=os.path.join(os.getenv('HOME'),'PLD_clone/Refs.git'))
-parser.add_argument('-u', '--user', help='the user name to register for pushes for new repositories', default = get_user())
-parser.add_argument('dirpattern', nargs='?', default = '*')
+
+subparsers = parser.add_subparsers(help='sub-command help')
+clone = subparsers.add_parser('fetch', help='fetch repositories', parents=[common_options],
+        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+clone.add_argument('-b', '--branch', help='branch to fetch', default = 'master')
+clone.add_argument('-P', '--prune', help='prune git repositories that do no exist upstream',
+        action='store_true')
+clone.add_argument('-j', help='number of threads to use', default=4, type=int)
+clone.add_argument('--depth', help='depth of fetch', default=0)
+clone.add_argument('-n', '--newpkgs', help='download packages that do not exist on local side',
+        action='store_true')
+clone.add_argument('-r', '--remoterefs', help='repository with list of all refs',
+    default=os.path.join(os.getenv('HOME'),'PLD_clone/Refs.git'))
+clone.add_argument('dirpattern', nargs='?', default = '*')
+
+create = subparsers.add_parser('init', help='init new repository', parents=[common_options],
+        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+create.add_argument('packages', nargs='+', help='list of packages to create')
+
 options = parser.parse_args()
 
 fetch_packages(options)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/git-slug.git/commitdiff/4ed64f73960519a2f4fd04c42950b2c96ae795c5



More information about the pld-cvs-commit mailing list