templatekw: add {size} keyword as an example of fctx-based keyword
I'll add {status}, and I think some lfs keywords can be migrated to this.
I'm not certain how many fctx-based keywords will be introduced into the
global space, but if there are a couple more, we'll probably need to sort
them out to the "File Keywords" section in the templater help. Until then,
fctx keywords are hidden as experimental.
--- a/mercurial/templatekw.py Sun Jul 29 21:25:37 2018 +0900
+++ b/mercurial/templatekw.py Sun Jul 29 21:28:51 2018 +0900
@@ -582,6 +582,12 @@
repo = context.resource(mapping, 'repo')
return repo.root
+@templatekeyword('size', requires={'fctx'})
+def showsize(context, mapping):
+ """Integer. Size of the current file in bytes. (EXPERIMENTAL)"""
+ fctx = context.resource(mapping, 'fctx')
+ return fctx.size()
+
@templatekeyword("successorssets", requires={'repo', 'ctx'})
def showsuccessorssets(context, mapping):
"""Returns a string of sets of successors for a changectx. Format used
--- a/tests/test-template-keywords.t Sun Jul 29 21:25:37 2018 +0900
+++ b/tests/test-template-keywords.t Sun Jul 29 21:28:51 2018 +0900
@@ -787,6 +787,15 @@
$ hg log -r8 -C -T '{file_copies_switch % "{path} <- {source}\n"}'
fourth <- second
+Test file attributes:
+
+ $ hg log -l1 -T '{files % "{pad(size, 3, left=True)} {path}\n"}'
+ a
+ 0 b
+ 7 fifth
+ fourth
+ 13 third
+
Test index keyword:
$ hg log -l 2 -T '{index + 10}{files % " {index}:{file}"}\n'