X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/blobdiff_plain/f0699cc74b73be50a6a99aa3459fb74383c094c3..4d0ba818236453fae51c9efb64950f23557cc428:/stgit/main.py diff --git a/stgit/main.py b/stgit/main.py index 008912b..9fa0afc 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 * @@ -30,6 +30,7 @@ from stgit.commands.common import * # The commands import stgit.commands.add import stgit.commands.applied +import stgit.commands.assimilate import stgit.commands.branch import stgit.commands.delete import stgit.commands.diff @@ -38,10 +39,13 @@ import stgit.commands.clone import stgit.commands.commit import stgit.commands.export import stgit.commands.files +import stgit.commands.float import stgit.commands.fold +import stgit.commands.goto import stgit.commands.id import stgit.commands.imprt import stgit.commands.init +import stgit.commands.log import stgit.commands.mail import stgit.commands.new import stgit.commands.patches @@ -54,6 +58,7 @@ import stgit.commands.rename import stgit.commands.resolved import stgit.commands.rm import stgit.commands.series +import stgit.commands.show import stgit.commands.status import stgit.commands.top import stgit.commands.unapplied @@ -66,6 +71,7 @@ import stgit.commands.uncommit commands = { 'add': stgit.commands.add, 'applied': stgit.commands.applied, + 'assimilate': stgit.commands.assimilate, 'branch': stgit.commands.branch, 'delete': stgit.commands.delete, 'diff': stgit.commands.diff, @@ -74,10 +80,13 @@ commands = { 'commit': stgit.commands.commit, 'export': stgit.commands.export, 'files': stgit.commands.files, + 'float': stgit.commands.float, 'fold': stgit.commands.fold, + 'goto': stgit.commands.goto, 'id': stgit.commands.id, 'import': stgit.commands.imprt, 'init': stgit.commands.init, + 'log': stgit.commands.log, 'mail': stgit.commands.mail, 'new': stgit.commands.new, 'patches': stgit.commands.patches, @@ -90,25 +99,95 @@ commands = { 'resolved': stgit.commands.resolved, 'rm': stgit.commands.rm, 'series': stgit.commands.series, + 'show': stgit.commands.show, 'status': stgit.commands.status, 'top': stgit.commands.top, 'unapplied':stgit.commands.unapplied, 'uncommit': stgit.commands.uncommit, } +# classification: repository, stack, patch, working copy +repocommands = ( + 'branch', + 'clone', + 'id', + 'pull' + ) +stackcommands = ( + 'applied', + 'assimilate', + 'clean', + 'commit', + 'float', + 'goto', + 'init', + 'pop', + 'push', + 'series', + 'top', + 'unapplied', + 'uncommit' + ) +patchcommands = ( + 'delete', + 'export', + 'files', + 'fold', + 'import', + 'log', + 'mail', + 'new', + 'pick', + 'refresh', + 'rename', + 'show' + ) +wccommands = ( + 'add', + 'diff', + 'patches', + 'resolved', + 'rm', + 'status' + ) + +def _print_helpstring(cmd): + print ' ' + cmd + ' ' * (12 - len(cmd)) + commands[cmd].help + def print_help(): print 'usage: %s [options]' % os.path.basename(sys.argv[0]) print - print 'commands:' + print 'Generic commands:' print ' help print the detailed command usage' print ' version display version information' print ' copyright display copyright information' - print - + # unclassified commands if any cmds = commands.keys() cmds.sort() for cmd in cmds: - print ' ' + cmd + ' ' * (12 - len(cmd)) + commands[cmd].help + if not cmd in repocommands and not cmd in stackcommands \ + and not cmd in patchcommands and not cmd in wccommands: + _print_helpstring(cmd) + print + + print 'Repository commands:' + for cmd in repocommands: + _print_helpstring(cmd) + print + + print 'Stack commands:' + for cmd in stackcommands: + _print_helpstring(cmd) + print + + print 'Patch commands:' + for cmd in patchcommands: + _print_helpstring(cmd) + print + + print 'Working-copy commands:' + for cmd in wccommands: + _print_helpstring(cmd) # # The main function (command dispatcher) @@ -119,7 +198,7 @@ def main(): prog = os.path.basename(sys.argv[0]) if len(sys.argv) < 2: - print >> sys.stderr, 'Unknown command' + print >> sys.stderr, 'usage: %s ' % prog print >> sys.stderr, \ ' Try "%s --help" for a list of supported commands' % prog sys.exit(1) @@ -127,7 +206,7 @@ def main(): cmd = sys.argv[1] if cmd in ['-h', '--help']: - if len(sys.argv) == 3 and sys.argv[2] in commands: + if len(sys.argv) >= 3 and sys.argv[2] in commands: cmd = sys.argv[2] sys.argv[2] = '--help' else: @@ -147,8 +226,7 @@ def main(): option_list = command.options) parser.print_help() else: - print 'usage: %s help ' % prog - + print_help() sys.exit(0) if cmd in ['-v', '--version', 'version']: print 'Stacked GIT %s' % version @@ -183,8 +261,8 @@ def main(): 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: