cat: pass filename template as explicit argument
authorYuya Nishihara <yuya@tcha.org>
Sat, 27 May 2017 18:50:05 +0900
changeset 32540 f4cd4c49e302
parent 32539 447bbd970047
child 32541 3b569745af6c
cat: pass filename template as explicit argument I'll move the handling of the '-' filename to commands.cat().
mercurial/cmdutil.py
mercurial/commands.py
mercurial/subrepo.py
--- 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)