comparison mercurial/commands.py @ 30957:14794735faa8

debugcommands: move 'debugtemplate' in the new module
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Thu, 02 Feb 2017 10:06:01 +0100
parents db30c6bfeb70
children df73368c87c3
comparison
equal deleted inserted replaced
30956:db30c6bfeb70 30957:14794735faa8
31 discovery, 31 discovery,
32 encoding, 32 encoding,
33 error, 33 error,
34 exchange, 34 exchange,
35 extensions, 35 extensions,
36 formatter,
37 graphmod, 36 graphmod,
38 hbisect, 37 hbisect,
39 help, 38 help,
40 hg, 39 hg,
41 lock as lockmod, 40 lock as lockmod,
49 scmutil, 48 scmutil,
50 server, 49 server,
51 sshserver, 50 sshserver,
52 streamclone, 51 streamclone,
53 templatekw, 52 templatekw,
54 templater,
55 ui as uimod, 53 ui as uimod,
56 util, 54 util,
57 ) 55 )
58 56
59 release = lockmod.release 57 release = lockmod.release
1852 Returns 0 on success, 1 if errors are encountered. 1850 Returns 0 on success, 1 if errors are encountered.
1853 """ 1851 """
1854 with repo.wlock(False): 1852 with repo.wlock(False):
1855 return cmdutil.copy(ui, repo, pats, opts) 1853 return cmdutil.copy(ui, repo, pats, opts)
1856 1854
1857 @command('debugtemplate',
1858 [('r', 'rev', [], _('apply template on changesets'), _('REV')),
1859 ('D', 'define', [], _('define template keyword'), _('KEY=VALUE'))],
1860 _('[-r REV]... [-D KEY=VALUE]... TEMPLATE'),
1861 optionalrepo=True)
1862 def debugtemplate(ui, repo, tmpl, **opts):
1863 """parse and apply a template
1864
1865 If -r/--rev is given, the template is processed as a log template and
1866 applied to the given changesets. Otherwise, it is processed as a generic
1867 template.
1868
1869 Use --verbose to print the parsed tree.
1870 """
1871 revs = None
1872 if opts['rev']:
1873 if repo is None:
1874 raise error.RepoError(_('there is no Mercurial repository here '
1875 '(.hg not found)'))
1876 revs = scmutil.revrange(repo, opts['rev'])
1877
1878 props = {}
1879 for d in opts['define']:
1880 try:
1881 k, v = (e.strip() for e in d.split('=', 1))
1882 if not k:
1883 raise ValueError
1884 props[k] = v
1885 except ValueError:
1886 raise error.Abort(_('malformed keyword definition: %s') % d)
1887
1888 if ui.verbose:
1889 aliases = ui.configitems('templatealias')
1890 tree = templater.parse(tmpl)
1891 ui.note(templater.prettyformat(tree), '\n')
1892 newtree = templater.expandaliases(tree, aliases)
1893 if newtree != tree:
1894 ui.note(("* expanded:\n"), templater.prettyformat(newtree), '\n')
1895
1896 mapfile = None
1897 if revs is None:
1898 k = 'debugtemplate'
1899 t = formatter.maketemplater(ui, k, tmpl)
1900 ui.write(templater.stringify(t(k, **props)))
1901 else:
1902 displayer = cmdutil.changeset_templater(ui, repo, None, opts, tmpl,
1903 mapfile, buffered=False)
1904 for r in revs:
1905 displayer.show(repo[r], **props)
1906 displayer.close()
1907 1855
1908 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...'), inferrepo=True) 1856 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...'), inferrepo=True)
1909 def debugwalk(ui, repo, *pats, **opts): 1857 def debugwalk(ui, repo, *pats, **opts):
1910 """show how files match on given patterns""" 1858 """show how files match on given patterns"""
1911 m = scmutil.match(repo[None], pats, opts) 1859 m = scmutil.match(repo[None], pats, opts)