Mercurial > hgrepos > DevTools > mercurial-extensions
diff extensions/kwarchive.py @ 109:be4811239acf
kwprint: print example file-dependent keywords also.
For a fake file with a fake nodeid print the full keyword list.
This can be suppressed with a flag "--no-file".
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Thu, 16 Aug 2018 17:47:04 +0200 |
| parents | aaf84b607154 |
| children | 5a86171fab62 |
line wrap: on
line diff
--- a/extensions/kwarchive.py Thu Aug 16 17:14:33 2018 +0200 +++ b/extensions/kwarchive.py Thu Aug 16 17:47:04 2018 +0200 @@ -198,10 +198,12 @@ ('', "path-filter", "short", _("determine how the path will be printed")), ('', "user-filter", "user", _("the part of the user to be printed"), _("USERFILTER")), ('', "reST", None, _("output in reST substitution definition syntax")), + ('', "no-file", None, _("don't show file-dependent keywords")), ] + cmdutil.subrepoopts + cmdutil.walkopts, _('[OPTION]...')) def kwprint(ui, repo, **opts): - '''print the file-independent keywords + '''print the file-independent keywords and for an example file-dependent + keywords By default, the revision used is the parent of the working directory; use -r/--rev to specify a different revision. @@ -234,6 +236,9 @@ in reStructuredText (reST) documents by using it's substitution feature. All revision keyword names have a ``VCS`` prefix. + Use --no-file to suppress the output of file-dependent keywords with an + example file. + Returns 0 on success. ''' @@ -251,11 +256,23 @@ hgpath=opts.get("path"), path_filter=get_checked_path_filter(opts), user_filter=get_checked_user_filter(opts)) + # make file-dependent keywords for an example file + file_keywords = make_file_keywords( + keywords, + "dir1/dir2/test.file", + "a4dd6f4b22e11fec41158eec187630c24a43120a") for key in sorted(keywords.keys()): if opts.get("reST"): ui.write(".. |VCS%s| replace:: %s\n" % (key, keywords[key])) else: ui.write("$%s: %s $\n" % (key, keywords[key])) + if not opts.get("no_file"): + ui.write("\n") + for key in sorted(file_keywords.keys()): + if opts.get("reST"): + ui.write(".. |VCS%s| replace:: %s\n" % (key, file_keywords[key])) + else: + ui.write("$%s: %s $\n" % (key, file_keywords[key])) def patch_archiver_class(archivername, filter): @@ -346,16 +363,7 @@ except LookupError: nodeid = None # file specific keywords - file_keywords = { - "HGsource": keywords["HGpath"] + '/' + real_name, - "Source": real_name, - "File": templatefilters.basename(real_name), - "Header": "%s %s %s %s" % (real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), - "HGid": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), - "HGheader": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["HGrevision"], keywords["Date"], keywords["Author"]), - "Id": "%s %s %s %s" % (templatefilters.basename(real_name), keywords["Revision"], keywords["Date"], keywords["Author"]), - "HGnodeid": nodeid or "", - } + file_keywords = make_file_keywords(keywords, real_name, nodeid) # This prevents unwanted keyword expansion here _MARKER = '$' _MARKER_RST = '|' @@ -440,6 +448,19 @@ return keywords +def make_file_keywords(keywords, real_name, nodeid): + return { + "HGsource": keywords["HGpath"] + '/' + real_name, + "Source": real_name, + "File": templatefilters.basename(real_name), + "Header": "%s %s %s %s" % (real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), + "HGid": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), + "HGheader": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["HGrevision"], keywords["Date"], keywords["Author"]), + "Id": "%s %s %s %s" % (templatefilters.basename(real_name), keywords["Revision"], keywords["Date"], keywords["Author"]), + "HGnodeid": nodeid or "", + } + + def stripped_hostname(hostname): """Return `hostname` without any domain port information""" if not hostname:
