##// END OF EJS Templates
templater: add experimental support for extdata...
Yuya Nishihara -
r34459:a1b89c8a default
parent child Browse files
Show More
@@ -24,6 +24,7 b' from . import ('
24 registrar,
24 registrar,
25 revset as revsetmod,
25 revset as revsetmod,
26 revsetlang,
26 revsetlang,
27 scmutil,
27 templatefilters,
28 templatefilters,
28 templatekw,
29 templatekw,
29 util,
30 util,
@@ -593,6 +594,22 b' def diff(context, mapping, args):'
593
594
594 return ''.join(chunks)
595 return ''.join(chunks)
595
596
597 @templatefunc('extdata(source)', argspec='source')
598 def extdata(context, mapping, args):
599 """Show a text read from the specified extdata source. (EXPERIMENTAL)"""
600 if 'source' not in args:
601 # i18n: "extdata" is a keyword
602 raise error.ParseError(_('extdata expects one argument'))
603
604 source = evalstring(context, mapping, args['source'])
605 cache = mapping['cache'].setdefault('extdata', {})
606 ctx = mapping['ctx']
607 if source in cache:
608 data = cache[source]
609 else:
610 data = cache[source] = scmutil.extdatasource(ctx.repo(), source)
611 return data.get(ctx.rev(), '')
612
596 @templatefunc('files(pattern)')
613 @templatefunc('files(pattern)')
597 def files(context, mapping, args):
614 def files(context, mapping, args):
598 """All files of the current changeset matching the pattern. See
615 """All files of the current changeset matching the pattern. See
@@ -10,12 +10,19 b' test revset support'
10 $ cat <<'EOF' >> .hg/hgrc
10 $ cat <<'EOF' >> .hg/hgrc
11 > [extdata]
11 > [extdata]
12 > filedata = file:extdata.txt
12 > filedata = file:extdata.txt
13 > notes = notes.txt
13 > shelldata = shell:cat extdata.txt | grep 2
14 > shelldata = shell:cat extdata.txt | grep 2
14 > EOF
15 > EOF
15 $ cat <<'EOF' > extdata.txt
16 $ cat <<'EOF' > extdata.txt
16 > 2
17 > 2 another comment on 2
17 > 3
18 > 3
18 > EOF
19 > EOF
20 $ cat <<'EOF' > notes.txt
21 > f6ed this change is great!
22 > e834 this is buggy :(
23 > 0625 first post
24 > bogusnode gives no error
25 > EOF
19
26
20 $ hg log -qr "extdata(filedata)"
27 $ hg log -qr "extdata(filedata)"
21 2:f6ed99a58333
28 2:f6ed99a58333
@@ -43,6 +50,31 b' test bad extdata() revset source'
43 abort: unknown extdata source 'unknown'
50 abort: unknown extdata source 'unknown'
44 [255]
51 [255]
45
52
53 test template support:
54
55 $ hg log -r:3 -T "{node|short}{if(extdata('notes'), ' # {extdata('notes')}')}\n"
56 06254b906311 # first post
57 e8342c9a2ed1 # this is buggy :(
58 f6ed99a58333 # this change is great!
59 9de260b1e88e
60
61 test template cache:
62
63 $ hg log -r:3 -T '{rev} "{extdata("notes")}" "{extdata("shelldata")}"\n'
64 0 "first post" ""
65 1 "this is buggy :(" ""
66 2 "this change is great!" "another comment on 2"
67 3 "" ""
68
69 test bad extdata() template source
70
71 $ hg log -T "{extdata()}\n"
72 hg: parse error: extdata expects one argument
73 [255]
74 $ hg log -T "{extdata('unknown')}\n"
75 abort: unknown extdata source 'unknown'
76 [255]
77
46 we don't fix up relative file URLs, but we do run shell commands in repo root
78 we don't fix up relative file URLs, but we do run shell commands in repo root
47
79
48 $ mkdir sub
80 $ mkdir sub
General Comments 0
You need to be logged in to leave comments. Login now