Closed AndydeCleyre closed 3 months ago
IIRC run scripts expect every line to be an :
rule and does not accept blank lines or comments, unlike the syntax recognized in Tupfiles. I remember having to take measures to get around a similar error, anyway, by skipping blank lines.
@earthlyreason Thanks so much! That's it, all good now.
I would prefer to be able to include blank lines, and to a lesser extent comments, but I can put comments in the template file so that's not too bad.
I pushed 4247a523587df54bd4a65ec42c4247a8488c050e to skip blank lines (completely blank, as in just a newline), as well as lines starting with #
Have you tried the built-in lua support for rules at all? I'm curious how that compares to this template style in your experience.
Thanks!
Sorry, I haven't tried using lua for rules, as I don't enjoy writing lua and am quite bad at it. I use wheezy.template a lot for various small projects and am happy with it.
Hello, and thanks!
I'm having trouble in one case using
run
to generate rules, withtup v0.8-4-g748b7c7d
.This is a working, but repetitive
Tupfile
:Tupfile
```sh : foreach vars/*.nt |> ^t^ nt2json %f >%o |> tmp/vars/%B.json : foreach vars/*.nt | tmp/vars/%B.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%B.json >%o |> schemes/kde/%B.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%B.json >%o |> schemes/telegram/%B.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%B.json >%o |> tmp/firefox/%B/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%B/manifest.json |> zip -j %o tmp/firefox/%B/manifest.json |> schemes/firefox/%B.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/trit.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BTrit.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BTrit.json >%o |> schemes/kde/%BTrit.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BTrit.json >%o |> schemes/telegram/%BTrit.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BTrit.json >%o |> schemes/sublime/ayu-dark-%BTrit.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BTrit.json >%o |> schemes/sublime/ayu-dark-%BTrit.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BTrit.json >%o |> tmp/firefox/%BTrit/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BTrit/manifest.json |> zip -j %o tmp/firefox/%BTrit/manifest.json |> schemes/firefox/%BTrit.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/prot.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BProt.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BProt.json >%o |> schemes/kde/%BProt.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BProt.json >%o |> schemes/telegram/%BProt.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BProt.json >%o |> schemes/sublime/ayu-dark-%BProt.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BProt.json >%o |> schemes/sublime/ayu-dark-%BProt.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BProt.json >%o |> tmp/firefox/%BProt/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BProt/manifest.json |> zip -j %o tmp/firefox/%BProt/manifest.json |> schemes/firefox/%BProt.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/deuter.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BDeuter.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BDeuter.json >%o |> schemes/kde/%BDeuter.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BDeuter.json >%o |> schemes/telegram/%BDeuter.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BDeuter.json >%o |> schemes/sublime/ayu-dark-%BDeuter.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BDeuter.json >%o |> schemes/sublime/ayu-dark-%BDeuter.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BDeuter.json >%o |> tmp/firefox/%BDeuter/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BDeuter/manifest.json |> zip -j %o tmp/firefox/%BDeuter/manifest.json |> schemes/firefox/%BDeuter.xpi ```I want to use tup's
run
to generate most of these, using wheezy.template (from PyPI). So I replace theTupfile
content with:And create
templates/tup.rules.wz
:wheezy template
```sh : foreach vars/*.nt |> ^t^ nt2json %f >%o |> tmp/vars/%B.json : foreach vars/*.nt | tmp/vars/%B.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%B.json >%o |> schemes/kde/%B.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%B.json >%o |> schemes/telegram/%B.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%B.json >%o |> tmp/firefox/%B/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%B/manifest.json |> zip -j %o tmp/firefox/%B/manifest.json |> schemes/firefox/%B.xpi @for variant, suffix in (('trit', 'Trit'), ('prot', 'Prot'), ('deuter', 'Deuter')): : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/@{variant}.json.wz tmp/vars/%B.json >%o |> tmp/vars/%B@{suffix}.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%B@{suffix}.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%B@{suffix}.json >%o |> schemes/kde/%B@{suffix}.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%B@{suffix}.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%B@{suffix}.json >%o |> schemes/telegram/%B@{suffix}.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B@{suffix}.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%B@{suffix}.json >%o |> schemes/sublime/ayu-dark-%B@{suffix}.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B@{suffix}.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%B@{suffix}.json >%o |> schemes/sublime/ayu-dark-%B@{suffix}.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B@{suffix}.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%B@{suffix}.json >%o |> tmp/firefox/%B@{suffix}/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%B@{suffix}/manifest.json |> zip -j %o tmp/firefox/%B@{suffix}/manifest.json |> schemes/firefox/%B@{suffix}.xpi @end ```If I manually run
wheezy.template templates/tup.rules.wz
, the stdout is identical to the originalTupfile
.But when I run
tup --debug-run
, I get:tup --debug-run output
```sh [ tup ] [0.000s] Scanning filesystem... [ tup ] [0.002s] Reading in new environment variables... [ tup ] [0.002s] Parsing Tupfiles... * 100% 0) [0.031s] . --- run script output from 'wheezy.template templates/tup.rules.wz' : foreach vars/*.nt |> ^t^ nt2json %f >%o |> tmp/vars/%B.json tup error: run-script line 2 is not a :-rule - ' : foreach vars/*.nt | tmp/vars/%B.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%B.json >%o |> schemes/kde/%B.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%B.json >%o |> schemes/telegram/%B.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%B.json >%o |> schemes/sublime/ayu-dark-%B.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%B.json >%o |> tmp/firefox/%B/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%B/manifest.json |> zip -j %o tmp/firefox/%B/manifest.json |> schemes/firefox/%B.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/trit.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BTrit.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BTrit.json >%o |> schemes/kde/%BTrit.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BTrit.json >%o |> schemes/telegram/%BTrit.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BTrit.json >%o |> schemes/sublime/ayu-dark-%BTrit.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BTrit.json >%o |> schemes/sublime/ayu-dark-%BTrit.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BTrit.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BTrit.json >%o |> tmp/firefox/%BTrit/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BTrit/manifest.json |> zip -j %o tmp/firefox/%BTrit/manifest.json |> schemes/firefox/%BTrit.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/prot.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BProt.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BProt.json >%o |> schemes/kde/%BProt.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BProt.json >%o |> schemes/telegram/%BProt.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BProt.json >%o |> schemes/sublime/ayu-dark-%BProt.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BProt.json >%o |> schemes/sublime/ayu-dark-%BProt.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BProt.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BProt.json >%o |> tmp/firefox/%BProt/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BProt/manifest.json |> zip -j %o tmp/firefox/%BProt/manifest.json |> schemes/firefox/%BProt.xpi : foreach vars/*.nt | tmp/vars/%B.json |> ^t^ PYTHONPATH=./templates wheezy.template templates/deuter.json.wz tmp/vars/%B.json >%o |> tmp/vars/%BDeuter.json ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> PYTHONPATH=./templates wheezy.template templates/kde.colors.wz tmp/vars/%BDeuter.json >%o |> schemes/kde/%BDeuter.colors ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/colors.tdesktop-theme.wz tmp/vars/%BDeuter.json >%o |> schemes/telegram/%BDeuter.tdesktop-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/ayu-dark.sublime-theme.wz tmp/vars/%BDeuter.json >%o |> schemes/sublime/ayu-dark-%BDeuter.sublime-theme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> wheezy.template templates/ayu-dark.sublime-color-scheme.wz tmp/vars/%BDeuter.json >%o |> schemes/sublime/ayu-dark-%BDeuter.sublime-color-scheme ^__pycache__ : foreach vars/*.nt | tmp/vars/%BDeuter.json |> ^t^ wheezy.template templates/firefox.manifest.json.wz tmp/vars/%BDeuter.json >%o |> tmp/firefox/%BDeuter/manifest.json ^__pycache__ : foreach vars/*.nt | tmp/firefox/%BDeuter/manifest.json |> zip -j %o tmp/firefox/%BDeuter/manifest.json |> schemes/firefox/%BDeuter.xpi ' tup error: Error parsing Tupfile line 1 Line was: 'run wheezy.template templates/tup.rules.wz' *** tup: 1 job failed. ```