X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/blobdiff_plain/762f6c8caf35b0352754d61b70c6ce8264bf2a6d..0e1c86f9ff8a81055a45c807cf1218d3ff28d986:/stgit/main.py diff --git a/stgit/main.py b/stgit/main.py index 8e00217..95e25f8 100644 --- a/stgit/main.py +++ b/stgit/main.py @@ -23,6 +23,7 @@ from optparse import OptionParser import stgit.commands from stgit.out import * +from stgit import utils # # The commands map @@ -39,11 +40,11 @@ class Commands(dict): if not candidates: out.error('Unknown command: %s' % key, 'Try "%s help" for a list of supported commands' % prog) - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) elif len(candidates) > 1: out.error('Ambiguous command: %s' % key, 'Candidates are: %s' % ', '.join(candidates)) - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) return candidates[0] @@ -60,7 +61,6 @@ class Commands(dict): commands = Commands({ 'add': 'add', 'applied': 'applied', - 'assimilate': 'assimilate', 'branch': 'branch', 'delete': 'delete', 'diff': 'diff', @@ -89,6 +89,7 @@ commands = Commands({ 'rebase': 'rebase', 'refresh': 'refresh', 'rename': 'rename', + 'repair': 'repair', 'resolved': 'resolved', 'rm': 'rm', 'series': 'series', @@ -109,7 +110,6 @@ repocommands = ( ) stackcommands = ( 'applied', - 'assimilate', 'branch', 'clean', 'commit', @@ -122,6 +122,7 @@ stackcommands = ( 'pull', 'push', 'rebase', + 'repair', 'series', 'sink', 'top', @@ -206,7 +207,7 @@ def main(): print >> sys.stderr, 'usage: %s ' % prog print >> sys.stderr, \ ' Try "%s --help" for a list of supported commands' % prog - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) cmd = sys.argv[1] @@ -216,13 +217,13 @@ def main(): sys.argv[2] = '--help' else: print_help() - sys.exit(0) + sys.exit(utils.STGIT_SUCCESS) if cmd == 'help': if len(sys.argv) == 3 and not sys.argv[2] in ['-h', '--help']: cmd = commands.canonical_cmd(sys.argv[2]) if not cmd in commands: out.error('%s help: "%s" command unknown' % (prog, cmd)) - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) sys.argv[0] += ' %s' % cmd command = commands[cmd] @@ -232,16 +233,16 @@ def main(): pager(parser.format_help()) else: print_help() - sys.exit(0) + sys.exit(utils.STGIT_SUCCESS) if cmd in ['-v', '--version', 'version']: from stgit.version import version print 'Stacked GIT %s' % version os.system('git --version') print 'Python version %s' % sys.version - sys.exit(0) + sys.exit(utils.STGIT_SUCCESS) if cmd in ['copyright']: print __copyright__ - sys.exit(0) + sys.exit(utils.STGIT_SUCCESS) # re-build the command line arguments cmd = commands.canonical_cmd(cmd) @@ -265,20 +266,18 @@ def main(): debug_level = int(os.environ.get('STGIT_DEBUG_LEVEL', 0)) except ValueError: out.error('Invalid STGIT_DEBUG_LEVEL environment variable') - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) try: directory.setup() config_setup() - # 'clone' doesn't expect an already initialised GIT tree. A Series - # object will be created after the GIT tree is cloned - if cmd != 'clone': + # Some commands don't (always) need an initialized series. + if directory.needs_current_series: if hasattr(options, 'branch') and options.branch: command.crt_series = Series(options.branch) else: command.crt_series = Series() - stgit.commands.common.crt_series = command.crt_series command.func(parser, options, args) except (StgException, IOError, ParsingError, NoSectionError), err: @@ -286,8 +285,8 @@ def main(): if debug_level > 0: raise else: - sys.exit(2) + sys.exit(utils.STGIT_COMMAND_ERROR) except KeyboardInterrupt: - sys.exit(1) + sys.exit(utils.STGIT_GENERAL_ERROR) - sys.exit(0) + sys.exit(utils.STGIT_SUCCESS)