X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/7b1ba1a6f8c89f551377b3b3791bfee7b01d3350..2c02c3b72d10e45f331e1276caccfa1b3d7c58d5:/stgit/main.py diff --git a/stgit/main.py b/stgit/main.py index 07bc7d4..d96ff2e 100644 --- a/stgit/main.py +++ b/stgit/main.py @@ -22,7 +22,7 @@ import sys, os from optparse import OptionParser, make_option from stgit.utils import * -from stgit import stack, git +from stgit import stack, git, gitmergeonefile from stgit.version import version from stgit.config import config from stgit.commands.common import * @@ -44,6 +44,7 @@ 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 @@ -56,6 +57,7 @@ import stgit.commands.series import stgit.commands.status import stgit.commands.top import stgit.commands.unapplied +import stgit.commands.uncommit # @@ -78,6 +80,7 @@ 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, @@ -90,13 +93,14 @@ commands = { 'status': stgit.commands.status, 'top': stgit.commands.top, 'unapplied':stgit.commands.unapplied, + 'uncommit': stgit.commands.uncommit, } def print_help(): print 'usage: %s [options]' % os.path.basename(sys.argv[0]) print print 'commands:' - print ' help print this message' + print ' help print the detailed command usage' print ' version display version information' print ' copyright display copyright information' print @@ -117,16 +121,38 @@ def main(): if len(sys.argv) < 2: print >> sys.stderr, 'Unknown command' print >> sys.stderr, \ - ' Try "%s help" for a list of supported commands' % prog + ' Try "%s --help" for a list of supported commands' % prog sys.exit(1) cmd = sys.argv[1] - if cmd in ['-h', '--help', 'help']: - print_help() + if cmd in ['-h', '--help']: + 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 == 'help': + if len(sys.argv) == 3 and not sys.argv[2] in ['-h', '--help']: + cmd = sys.argv[2] + if not cmd in commands: + print >> sys.stderr, '%s help: "%s" command unknown' \ + % (prog, cmd) + sys.exit(1) + + sys.argv[0] += ' %s' % cmd + command = commands[cmd] + parser = OptionParser(usage = command.usage, + option_list = command.options) + parser.print_help() + else: + print 'usage: %s help ' % prog + 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']: @@ -143,25 +169,25 @@ def main(): del(sys.argv[1]) command = commands[cmd] - parser = OptionParser(usage = command.usage, - option_list = command.options) + usage = command.usage.split('\n')[0].strip() + parser = OptionParser(usage = usage, 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: + except (IOError, CmdException, stack.StackException, git.GitException, + gitmergeonefile.GitMergeException), err: print >> sys.stderr, '%s %s: %s' % (prog, cmd, err) sys.exit(2) + except KeyboardInterrupt: + sys.exit(1) sys.exit(0)