Implement a 'pick' command for cherry-picking
[stgit] / stgit / main.py
index 3fd11a1..857e60b 100644 (file)
@@ -33,12 +33,16 @@ import stgit.commands.applied
 import stgit.commands.delete
 import stgit.commands.diff
 import stgit.commands.clean
+import stgit.commands.clone
 import stgit.commands.export
 import stgit.commands.files
+import stgit.commands.fold
+import stgit.commands.id
 import stgit.commands.imprt
 import stgit.commands.init
 import stgit.commands.mail
 import stgit.commands.new
+import stgit.commands.pick
 import stgit.commands.pop
 import stgit.commands.pull
 import stgit.commands.push
@@ -61,12 +65,16 @@ commands = {
     'delete':   stgit.commands.delete,
     'diff':     stgit.commands.diff,
     'clean':    stgit.commands.clean,
+    'clone':    stgit.commands.clone,
     'export':   stgit.commands.export,
     'files':    stgit.commands.files,
+    'fold':     stgit.commands.fold,
+    'id':       stgit.commands.id,
     'import':   stgit.commands.imprt,
     'init':     stgit.commands.init,
     'mail':     stgit.commands.mail,
     'new':      stgit.commands.new,
+    'pick':     stgit.commands.pick,
     'pop':      stgit.commands.pop,
     'pull':     stgit.commands.pull,
     'push':     stgit.commands.push,
@@ -85,6 +93,9 @@ def print_help():
     print
     print 'commands:'
     print '  help        print this message'
+    print '  version     display version information'
+    print '  copyright   display copyright information'
+    print
 
     cmds = commands.keys()
     cmds.sort()
@@ -110,13 +121,17 @@ def main():
     if cmd in ['-h', '--help', 'help']:
         print_help()
         sys.exit(0)
-    if cmd in ['-v', '--version']:
-        print '%s %s' % (prog, version)
+    if cmd in ['-v', '--version', 'version']:
+        print 'Stacked GIT %s' % version
+        print 'Python version %s' % sys.version
+        sys.exit(0)
+    if cmd in ['copyright']:
+        print __copyright__
         sys.exit(0)
     if not cmd in commands:
         print >> sys.stderr, 'Unknown command: %s' % cmd
-        print >> sys.stderr, '  Try "%s help" for a list of supported commands' \
-              % prog
+        print >> sys.stderr, '  Try "%s help" for a list of supported ' \
+              'commands' % prog
         sys.exit(1)
 
     # re-build the command line arguments
@@ -128,9 +143,15 @@ def main():
                           option_list = command.options)
     options, args = parser.parse_args()
     try:
-        # the lines below are a simple way to avoid an exception when
+        # 'clone' doesn't expect an already initialised GIT tree
+        if cmd == 'clone':
+            stgit.commands.common.crt_series = stack.Series('master')
+        elif hasattr(options, 'branch') and options.branch:
+            stgit.commands.common.crt_series = stack.Series(options.branch)
+        else:
+            stgit.commands.common.crt_series = stack.Series()
+        # the line below is a simple way to avoid an exception when
         # stgit is run outside an initialised tree
-        stgit.commands.common.crt_series = stack.Series()
         setattr(command, 'crt_series', stgit.commands.common.crt_series)
 
         command.func(parser, options, args)