mercurial/commands.py
changeset 423 25afb21d97ba
parent 396 8f8bb77d560e
child 429 688d03d6997a
equal deleted inserted replaced
396:8f8bb77d560e 423:25afb21d97ba
     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)