Treat "stg --help cmd" and "stg help cmd" like "stg cmd
[stgit] / stgit / main.py
index ed57668..6d86ee4 100644 (file)
@@ -30,10 +30,12 @@ from stgit.commands.common import *
 # The commands
 import stgit.commands.add
 import stgit.commands.applied
+import stgit.commands.branch
 import stgit.commands.delete
 import stgit.commands.diff
 import stgit.commands.clean
 import stgit.commands.clone
+import stgit.commands.commit
 import stgit.commands.export
 import stgit.commands.files
 import stgit.commands.fold
@@ -42,6 +44,8 @@ import stgit.commands.imprt
 import stgit.commands.init
 import stgit.commands.mail
 import stgit.commands.new
+import stgit.commands.patches
+import stgit.commands.pick
 import stgit.commands.pop
 import stgit.commands.pull
 import stgit.commands.push
@@ -61,10 +65,12 @@ import stgit.commands.unapplied
 commands = {
     'add':      stgit.commands.add,
     'applied':  stgit.commands.applied,
+    'branch':   stgit.commands.branch,
     'delete':   stgit.commands.delete,
     'diff':     stgit.commands.diff,
     'clean':    stgit.commands.clean,
     'clone':    stgit.commands.clone,
+    'commit':   stgit.commands.commit,
     'export':   stgit.commands.export,
     'files':    stgit.commands.files,
     'fold':     stgit.commands.fold,
@@ -73,6 +79,8 @@ commands = {
     'init':     stgit.commands.init,
     'mail':     stgit.commands.mail,
     'new':      stgit.commands.new,
+    'patches':  stgit.commands.patches,
+    'pick':     stgit.commands.pick,
     'pop':      stgit.commands.pop,
     'pull':     stgit.commands.pull,
     'push':     stgit.commands.push,
@@ -117,10 +125,15 @@ def main():
     cmd = sys.argv[1]
 
     if cmd in ['-h', '--help', 'help']:
-        print_help()
-        sys.exit(0)
+        if len(sys.argv) == 3 and sys.argv[2] in commands:
+            cmd = sys.argv[2]
+            sys.argv[2] = '--help';
+        else:
+            print_help()
+            sys.exit(0)
     if cmd in ['-v', '--version', 'version']:
         print 'Stacked GIT %s' % version
+        os.system('git --version')
         print 'Python version %s' % sys.version
         sys.exit(0)
     if cmd in ['copyright']:
@@ -141,21 +154,21 @@ def main():
                           option_list = command.options)
     options, args = parser.parse_args()
     try:
-        # '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
-        setattr(command, 'crt_series', stgit.commands.common.crt_series)
+        # 'clone' doesn't expect an already initialised GIT tree. A Series
+        # object will be created after the GIT tree is cloned
+        if cmd != 'clone':
+            if hasattr(options, 'branch') and options.branch:
+                command.crt_series = stack.Series(options.branch)
+            else:
+                command.crt_series = stack.Series()
+            stgit.commands.common.crt_series = command.crt_series
 
         command.func(parser, options, args)
     except (IOError, CmdException, stack.StackException, git.GitException), \
                err:
         print >> sys.stderr, '%s %s: %s' % (prog, cmd, err)
         sys.exit(2)
+    except KeyboardInterrupt:
+        sys.exit(1)
 
     sys.exit(0)