274 ui.status("summary: %s\n" % description.splitlines()[0]) |
274 ui.status("summary: %s\n" % description.splitlines()[0]) |
275 ui.status("\n") |
275 ui.status("\n") |
276 |
276 |
277 def show_version(ui): |
277 def show_version(ui): |
278 """output version and copyright information""" |
278 """output version and copyright information""" |
279 ui.write("Mercurial version %s\n" % version.get_version()) |
279 ui.write("Mercurial Distributed SCM (version %s)\n" |
|
280 % version.get_version()) |
280 ui.status( |
281 ui.status( |
281 "\nCopyright (C) 2005 Matt Mackall <mpm@selenic.com>\n" |
282 "\nCopyright (C) 2005 Matt Mackall <mpm@selenic.com>\n" |
282 "This is free software; see the source for copying conditions. " |
283 "This is free software; see the source for copying conditions. " |
283 "There is NO\nwarranty; " |
284 "There is NO\nwarranty; " |
284 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
285 "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
285 ) |
286 ) |
286 |
287 |
287 def help_(ui, cmd=None): |
288 def help_(ui, cmd=None): |
288 """show help for a given command or all commands""" |
289 """show help for a given command or all commands""" |
289 if cmd and cmd != 'shortlist': |
290 if cmd and cmd != 'shortlist': |
290 i = find(cmd) |
291 key, i = find(cmd) |
|
292 # synopsis |
291 ui.write("%s\n\n" % i[2]) |
293 ui.write("%s\n\n" % i[2]) |
292 |
294 |
293 if i[1]: |
295 # description |
|
296 doc = i[0].__doc__ |
|
297 if ui.quiet: |
|
298 doc = doc.splitlines(0)[0] |
|
299 ui.write("%s\n" % doc.rstrip()) |
|
300 |
|
301 # aliases |
|
302 if not ui.quiet: |
|
303 aliases = ', '.join(key.split('|')[1:]) |
|
304 if aliases: |
|
305 ui.write("\naliases: %s\n" % aliases) |
|
306 |
|
307 # options |
|
308 if not ui.quiet and i[1]: |
|
309 ui.write("\noptions:\n\n") |
294 for s, l, d, c in i[1]: |
310 for s, l, d, c in i[1]: |
295 opt = ' ' |
311 opt = ' ' |
296 if s: |
312 if s: |
297 opt = opt + '-' + s + ' ' |
313 opt = opt + '-' + s + ' ' |
298 if l: |
314 if l: |
300 if d: |
316 if d: |
301 opt = opt + '(' + str(d) + ')' |
317 opt = opt + '(' + str(d) + ')' |
302 ui.write(opt, "\n") |
318 ui.write(opt, "\n") |
303 if c: |
319 if c: |
304 ui.write(' %s\n' % c) |
320 ui.write(' %s\n' % c) |
305 ui.write("\n") |
321 |
306 |
|
307 ui.write(i[0].__doc__, "\n") |
|
308 sys.exit(0) |
|
309 else: |
322 else: |
|
323 # program name |
310 if ui.verbose: |
324 if ui.verbose: |
311 show_version(ui) |
325 show_version(ui) |
312 ui.write('\n') |
326 else: |
313 if ui.verbose: |
327 ui.status("Mercurial Distributed SCM\n") |
314 ui.write("global options:\n\n") |
328 ui.status('\n') |
315 for s, l, d, c in globalopts: |
329 |
316 opt = ' ' |
330 # list of commands |
317 if s: |
|
318 opt = opt + '-' + s + ' ' |
|
319 if l: |
|
320 opt = opt + '--' + l + ' ' |
|
321 if d: |
|
322 opt = opt + '(' + str(d) + ')' |
|
323 ui.write(opt, "\n") |
|
324 if c: |
|
325 ui.write(' %s\n' % c) |
|
326 ui.write("\n") |
|
327 |
|
328 ui.write('hg commands:\n\n') |
|
329 |
|
330 if cmd == "shortlist": |
331 if cmd == "shortlist": |
331 ui.write('basic hg commands (use "hg help" for more):\n\n') |
332 ui.status('basic commands (use "hg help" ' |
|
333 'for the full list or option "-v" for details):\n\n') |
|
334 elif ui.verbose: |
|
335 ui.status('list of commands:\n\n') |
|
336 else: |
|
337 ui.status('list of commands (use "hg help -v" ' |
|
338 'to show aliases and global options):\n\n') |
332 |
339 |
333 h = {} |
340 h = {} |
334 cmds = {} |
341 cmds = {} |
335 for c, e in table.items(): |
342 for c, e in table.items(): |
336 f = c.split("|")[0] |
343 f = c.split("|")[0] |
337 if cmd == "shortlist" and not f.startswith("^"): |
344 if cmd == "shortlist" and not f.startswith("^"): |
338 continue |
345 continue |
|
346 f = f.lstrip("^") |
339 if not ui.debugflag and f.startswith("debug"): |
347 if not ui.debugflag and f.startswith("debug"): |
340 continue |
348 continue |
341 f = f.lstrip("^") |
|
342 d = "" |
349 d = "" |
343 if e[0].__doc__: |
350 if e[0].__doc__: |
344 d = e[0].__doc__.splitlines(0)[0].rstrip() |
351 d = e[0].__doc__.splitlines(0)[0].rstrip() |
345 h[f] = d |
352 h[f] = d |
346 cmds[f]=c.lstrip("^") |
353 cmds[f]=c.lstrip("^") |
352 if ui.verbose: |
359 if ui.verbose: |
353 commands = cmds[f].replace("|",", ") |
360 commands = cmds[f].replace("|",", ") |
354 ui.write(" %s:\n %s\n"%(commands,h[f])) |
361 ui.write(" %s:\n %s\n"%(commands,h[f])) |
355 else: |
362 else: |
356 ui.write(' %-*s %s\n' % (m, f, h[f])) |
363 ui.write(' %-*s %s\n' % (m, f, h[f])) |
|
364 |
|
365 # global options |
|
366 if ui.verbose: |
|
367 ui.write("\nglobal options:\n\n") |
|
368 for s, l, d, c in globalopts: |
|
369 opt = ' ' |
|
370 if s: |
|
371 opt = opt + '-' + s + ' ' |
|
372 if l: |
|
373 opt = opt + '--' + l + ' ' |
|
374 if d: |
|
375 opt = opt + '(' + str(d) + ')' |
|
376 ui.write(opt, "\n") |
|
377 if c: |
|
378 ui.write(' %s\n' % c) |
357 |
379 |
358 # Commands start here, listed alphabetically |
380 # Commands start here, listed alphabetically |
359 |
381 |
360 def add(ui, repo, *pats, **opts): |
382 def add(ui, repo, *pats, **opts): |
361 '''add the specified files on the next commit''' |
383 '''add the specified files on the next commit''' |
1328 norepo = "clone init version help debugindex debugindexdot" |
1350 norepo = "clone init version help debugindex debugindexdot" |
1329 |
1351 |
1330 def find(cmd): |
1352 def find(cmd): |
1331 for e in table.keys(): |
1353 for e in table.keys(): |
1332 if re.match("(%s)$" % e, cmd): |
1354 if re.match("(%s)$" % e, cmd): |
1333 return table[e] |
1355 return e, table[e] |
1334 |
1356 |
1335 raise UnknownCommand(cmd) |
1357 raise UnknownCommand(cmd) |
1336 |
1358 |
1337 class SignalInterrupt(Exception): |
1359 class SignalInterrupt(Exception): |
1338 """Exception raised on SIGTERM and SIGHUP.""" |
1360 """Exception raised on SIGTERM and SIGHUP.""" |
1360 elif not args: |
1382 elif not args: |
1361 return ("help", help_, ["shortlist"], options, cmdoptions) |
1383 return ("help", help_, ["shortlist"], options, cmdoptions) |
1362 else: |
1384 else: |
1363 cmd, args = args[0], args[1:] |
1385 cmd, args = args[0], args[1:] |
1364 |
1386 |
1365 i = find(cmd) |
1387 i = find(cmd)[1] |
1366 |
1388 |
1367 # combine global options into local |
1389 # combine global options into local |
1368 c = list(i[1]) |
1390 c = list(i[1]) |
1369 for o in globalopts: |
1391 for o in globalopts: |
1370 c.append((o[0], o[1], options[o[1]], o[3])) |
1392 c.append((o[0], o[1], options[o[1]], o[3])) |