6 # of the GNU General Public License, incorporated herein by reference. |
6 # of the GNU General Public License, incorporated herein by reference. |
7 |
7 |
8 import os, re, sys, signal |
8 import os, re, sys, signal |
9 import fancyopts, ui, hg |
9 import fancyopts, ui, hg |
10 from demandload import * |
10 from demandload import * |
11 demandload(globals(), "mdiff time hgweb traceback random signal errno") |
11 demandload(globals(), "mdiff time hgweb traceback random signal errno version") |
12 |
12 |
13 class UnknownCommand(Exception): pass |
13 class UnknownCommand(Exception): pass |
14 |
14 |
15 def filterfiles(filters, files): |
15 def filterfiles(filters, files): |
16 l = [ x for x in files if x in filters ] |
16 l = [ x for x in files if x in filters ] |
132 ui.status("\n") |
132 ui.status("\n") |
133 else: |
133 else: |
134 ui.status("summary: %s\n" % description.splitlines()[0]) |
134 ui.status("summary: %s\n" % description.splitlines()[0]) |
135 ui.status("\n") |
135 ui.status("\n") |
136 |
136 |
|
137 def show_version(ui): |
|
138 """output version and copyright information""" |
|
139 ui.write("Mercurial version %s\n" % version.get_version()) |
|
140 ui.status( |
|
141 "\nCopyright (C) 2005 Matt Mackall <mpm@selenic.com>\n" |
|
142 "This is free software; see the source for copying conditions. " |
|
143 "There is NO\nwarranty; " |
|
144 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
|
145 ) |
|
146 |
137 def help(ui, cmd=None): |
147 def help(ui, cmd=None): |
138 '''show help for a given command or all commands''' |
148 '''show help for a given command or all commands''' |
139 if cmd: |
149 if cmd: |
140 try: |
150 try: |
141 i = find(cmd) |
151 i = find(cmd) |
154 ui.write(i[0].__doc__, "\n") |
164 ui.write(i[0].__doc__, "\n") |
155 except UnknownCommand: |
165 except UnknownCommand: |
156 ui.warn("hg: unknown command %s\n" % cmd) |
166 ui.warn("hg: unknown command %s\n" % cmd) |
157 sys.exit(0) |
167 sys.exit(0) |
158 else: |
168 else: |
159 ui.status('hg commands:\n\n') |
169 if not ui.quiet: |
|
170 show_version(ui) |
|
171 ui.write('\n') |
|
172 ui.write('hg commands:\n\n') |
160 |
173 |
161 h = {} |
174 h = {} |
162 for e in table.values(): |
175 for e in table.values(): |
163 f = e[0] |
176 f = e[0] |
164 if f.__name__.startswith("debug"): continue |
177 if f.__name__.startswith("debug"): continue |
169 |
182 |
170 fns = h.keys() |
183 fns = h.keys() |
171 fns.sort() |
184 fns.sort() |
172 m = max(map(len, fns)) |
185 m = max(map(len, fns)) |
173 for f in fns: |
186 for f in fns: |
174 ui.status(' %-*s %s\n' % (m, f, h[f])) |
187 ui.write(' %-*s %s\n' % (m, f, h[f])) |
175 |
188 |
176 # Commands start here, listed alphabetically |
189 # Commands start here, listed alphabetically |
177 |
190 |
178 def add(ui, repo, file, *files): |
191 def add(ui, repo, file, *files): |
179 '''add the specified files on the next commit''' |
192 '''add the specified files on the next commit''' |
677 'overwrite locally modified files')], |
690 'overwrite locally modified files')], |
678 'hg update [options] [node]'), |
691 'hg update [options] [node]'), |
679 "verify": (verify, [], 'hg verify'), |
692 "verify": (verify, [], 'hg verify'), |
680 } |
693 } |
681 |
694 |
682 norepo = "init branch help debugindex debugindexdot" |
695 norepo = "init version help debugindex debugindexdot" |
683 |
696 |
684 def find(cmd): |
697 def find(cmd): |
685 i = None |
698 i = None |
686 for e in table.keys(): |
699 for e in table.keys(): |
687 if re.match("(%s)$" % e, cmd): |
700 if re.match("(%s)$" % e, cmd): |
702 opts = [('v', 'verbose', None, 'verbose'), |
715 opts = [('v', 'verbose', None, 'verbose'), |
703 ('d', 'debug', None, 'debug'), |
716 ('d', 'debug', None, 'debug'), |
704 ('q', 'quiet', None, 'quiet'), |
717 ('q', 'quiet', None, 'quiet'), |
705 ('p', 'profile', None, 'profile'), |
718 ('p', 'profile', None, 'profile'), |
706 ('y', 'noninteractive', None, 'run non-interactively'), |
719 ('y', 'noninteractive', None, 'run non-interactively'), |
|
720 ('', 'version', None, 'output version information and exit'), |
707 ] |
721 ] |
708 |
722 |
709 args = fancyopts.fancyopts(args, opts, options, |
723 args = fancyopts.fancyopts(args, opts, options, |
710 'hg [options] <command> [options] [files]') |
724 'hg [options] <command> [options] [files]') |
711 |
725 |
714 else: |
728 else: |
715 cmd, args = args[0], args[1:] |
729 cmd, args = args[0], args[1:] |
716 |
730 |
717 u = ui.ui(options["verbose"], options["debug"], options["quiet"], |
731 u = ui.ui(options["verbose"], options["debug"], options["quiet"], |
718 not options["noninteractive"]) |
732 not options["noninteractive"]) |
|
733 |
|
734 if options["version"]: |
|
735 show_version(u) |
|
736 sys.exit(0) |
719 |
737 |
720 try: |
738 try: |
721 i = find(cmd) |
739 i = find(cmd) |
722 except UnknownCommand: |
740 except UnknownCommand: |
723 u.warn("hg: unknown command '%s'\n" % cmd) |
741 u.warn("hg: unknown command '%s'\n" % cmd) |