-
Notifications
You must be signed in to change notification settings - Fork 578
Description
Awesome tool, I'm mostly very happy with it, and this is a relatively minor QOL issue issue with two workarounds I mention below.
My use-case is something like:
build_dir := "build"
file_name := "out"
default arg="": (html arg) (pdf arg)
html arg="":
pandoc input.md -o "{{build_dir}}/{{arg}}/{{file_name}}.html"
pdf arg="":
pandoc input.md -o "{{build_dir}}/{{arg}}/{{file_name}}.pdf"
I would like a way to deduplicate the specific string formatting {{build_dir}}/{{arg}}/{{file_name}}
so that my uses of it don't become out of sync. My current solution is to use arg
as a just variable instead of an argument, i.e. arg := ""
and file_path := build_dir + "/" + arg + "/" + file_name
at the top of the Justfile
. This is imperfect because it requires passing the argument to the CLI as just pdf arg=foo
instead of just pdf foo
, and also it puts into global scope something that shouldn't necessarily be there.
Another workaround is something like this:
[...]
default arg="": (_default (build_dir + "/" + arg + "/" + file_name))
_default arg: (html arg) (pdf arg)
html arg="":
pandoc input.md -o "{{arg}}.html"
pdf arg="":
pandoc input.md -o "{{arg}}.pdf"
But this is inelegant and doesn't allow the html
and pdf
targets to be run directly.
Is there a better way to accomplish this currently? If not, is it possible to add some syntax for declaring functions on strings? I'm imagining something like (this is obviously just a first draft at a syntax):
buildpath(s) := build_dir + "/" + s + "/" + file_name
pdf arg="":
pandoc input.md -o "{{buildpath(arg)}}.pdf"
I haven't looked super closely into the code base so I'm not sure how easy this would be. I'd be happy to look into writing a PR for this if it's desirable and feasible. Regardless, thanks for a great tool.