cat: pass filename template as explicit argument
I'll move the handling of the '-' filename to commands.cat().
--- a/mercurial/cmdutil.py Thu May 25 21:28:08 2017 +0900
+++ b/mercurial/cmdutil.py Sat May 27 18:50:05 2017 +0900
@@ -2632,11 +2632,11 @@
return ret
-def cat(ui, repo, ctx, matcher, prefix, **opts):
+def cat(ui, repo, ctx, matcher, fntemplate, prefix, **opts):
err = 1
def write(path):
- fp = makefileobj(repo, opts.get('output'), ctx.node(),
+ fp = makefileobj(repo, fntemplate, ctx.node(),
pathname=os.path.join(prefix, path))
data = ctx[path].data()
if opts.get('decode'):
@@ -2666,8 +2666,8 @@
try:
submatch = matchmod.subdirmatcher(subpath, matcher)
- if not sub.cat(submatch, os.path.join(prefix, sub._path),
- **opts):
+ if not sub.cat(submatch, fntemplate,
+ os.path.join(prefix, sub._path), **opts):
err = 0
except error.RepoLookupError:
ui.status(_("skipping missing subrepository: %s\n")
--- a/mercurial/commands.py Thu May 25 21:28:08 2017 +0900
+++ b/mercurial/commands.py Sat May 27 18:50:05 2017 +0900
@@ -1363,9 +1363,10 @@
"""
ctx = scmutil.revsingle(repo, opts.get('rev'))
m = scmutil.match(ctx, (file1,) + pats, opts)
+ fntemplate = opts.pop('output', '')
ui.pager('cat')
- return cmdutil.cat(ui, repo, ctx, m, '', **opts)
+ return cmdutil.cat(ui, repo, ctx, m, fntemplate, '', **opts)
@command('^clone',
[('U', 'noupdate', None, _('the clone will include an empty working '
--- a/mercurial/subrepo.py Thu May 25 21:28:08 2017 +0900
+++ b/mercurial/subrepo.py Sat May 27 18:50:05 2017 +0900
@@ -538,7 +538,7 @@
self.ui.warn("%s: %s" % (prefix, _("addremove is not supported")))
return 1
- def cat(self, match, prefix, **opts):
+ def cat(self, match, fntemplate, prefix, **opts):
return 1
def status(self, rev2, **opts):
@@ -767,10 +767,11 @@
dry_run, similarity)
@annotatesubrepoerror
- def cat(self, match, prefix, **opts):
+ def cat(self, match, fntemplate, prefix, **opts):
rev = self._state[1]
ctx = self._repo[rev]
- return cmdutil.cat(self.ui, self._repo, ctx, match, prefix, **opts)
+ return cmdutil.cat(self.ui, self._repo, ctx, match, fntemplate, prefix,
+ **opts)
@annotatesubrepoerror
def status(self, rev2, **opts):
@@ -1832,7 +1833,7 @@
@annotatesubrepoerror
- def cat(self, match, prefix, **opts):
+ def cat(self, match, fntemplate, prefix, **opts):
rev = self._state[1]
if match.anypats():
return 1 #No support for include/exclude yet
@@ -1842,7 +1843,7 @@
for f in match.files():
output = self._gitcommand(["show", "%s:%s" % (rev, f)])
- fp = cmdutil.makefileobj(self._subparent, opts.get('output'),
+ fp = cmdutil.makefileobj(self._subparent, fntemplate,
self._ctx.node(),
pathname=self.wvfs.reljoin(prefix, f))
fp.write(output)