Mercurial > hg > mercurial-crew-with-dirclash
view doc/gendoc.py @ 3295:764688cf51e5
merge: remember rename copies and parents properly on commit
record copies in dirstate even if rename was remote
this lets us record it properly at commit
teach checkfilemerge about copies, including merge cases
pull old copy code out of commit
extend rename-merge1 test to show file index
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 08 Oct 2006 19:57:45 -0500 |
parents | 7956893e8458 |
children | 54fd4d3b4fce |
line wrap: on
line source
import sys, textwrap # import from the live mercurial repo sys.path.insert(0, "..") from mercurial.commands import table, globalopts from mercurial.i18n import gettext as _ def get_desc(docstr): if not docstr: return "", "" # sanitize docstr = docstr.strip("\n") docstr = docstr.rstrip() shortdesc = docstr.splitlines()[0].strip() i = docstr.find("\n") if i != -1: desc = docstr[i+2:] else: desc = " %s" % shortdesc return (shortdesc, desc) def get_opts(opts): for shortopt, longopt, default, desc in opts: allopts = [] if shortopt: allopts.append("-%s" % shortopt) if longopt: allopts.append("--%s" % longopt) desc += default and _(" (default: %s)") % default or "" yield(", ".join(allopts), desc) def get_cmd(cmd): d = {} attr = table[cmd] cmds = cmd.lstrip("^").split("|") d['synopsis'] = attr[2] d['cmd'] = cmds[0] d['aliases'] = cmd.split("|")[1:] d['desc'] = get_desc(attr[0].__doc__) d['opts'] = list(get_opts(attr[1])) return d def show_doc(ui): def bold(s, text=""): ui.write("%s\n%s\n%s\n" % (s, "="*len(s), text)) def underlined(s, text=""): ui.write("%s\n%s\n%s\n" % (s, "-"*len(s), text)) # print options underlined(_("OPTIONS")) for optstr, desc in get_opts(globalopts): ui.write("%s::\n %s\n\n" % (optstr, desc)) # print cmds underlined(_("COMMANDS")) h = {} for c, attr in table.items(): f = c.split("|")[0] f = f.lstrip("^") h[f] = c cmds = h.keys() cmds.sort() for f in cmds: if f.startswith("debug"): continue d = get_cmd(h[f]) # synopsis ui.write("%s::\n" % d['synopsis'].replace("hg ","", 1)) # description ui.write("%s\n\n" % d['desc'][1]) # options opt_output = list(d['opts']) if opt_output: opts_len = max([len(line[0]) for line in opt_output]) ui.write(_(" options:\n")) for optstr, desc in opt_output: if desc: s = "%-*s %s" % (opts_len, optstr, desc) else: s = optstr s = textwrap.fill(s, initial_indent=4 * " ", subsequent_indent=(6 + opts_len) * " ") ui.write("%s\n" % s) ui.write("\n") # aliases if d['aliases']: ui.write(_(" aliases: %s\n\n") % " ".join(d['aliases'])) if __name__ == "__main__": show_doc(sys.stdout)