Open tezkerek opened 3 years ago
Currently you could just use the variable itself in the path since it's expanded (well, after running dotter once and restarting the shell I guess)
Maybe parse the variables first, then render a handlebars template for each path. Or is that overkill?
That'd be the only way of doing it. I'll test if this brings a significant slowdown, if it doesn't then I don't see a reason against this.
I looked over shellexpand
and I think that a custom context would work too, and might be more lightweight than a handlebars template. But having helpers in paths might be useful anyway.
Yeah, if I'm adding access to variables might as well have full handlebars functionality, with handlebars syntax.
This would be pretty helpful to me. I'd like to do something like:
includes = [".dotter/{{OS}}.toml"]
OR
includes = [".dotter/$OS.toml"]
This will allow me to dynamically get the correct OS files.
Wouldn't a better solution be to have per package settings like this?
In
.dotfiles/
-zsh/
--zshrc
--zprofile
--aliases.zsh
Out
~/
-.config/
--zsh/
---.zshrc
---aliases.zsh
-.zprofile
[zsh.settings]
source_dir = "zsh"
target_dir = "~/.config/zsh"
# Overrides
[zsh.files]
zshrc=".zshrc"
[zsh.files.zprofile]
path="exact"
target="~/.zprofile"
There should be no need for scripts and variables for paths this way. It also simplifies the configuration needed.
Is your feature request related to a problem? Please describe. I'd like to use variables in dotter's config files themselves. Something like:
and then in
~/.zprofile
too:Describe the solution you'd like Maybe parse the variables first, then render a handlebars template for each path. Or is that overkill? Alternatively, maybe new values can be added to
shellexpand
, to be substituted like env vars ($config_dir/zsh/zshrc
).Might need changes upstream.I thinkshellexpand::env_with_context
could be used for this.Describe alternatives you've considered Run dotter with variables set on the shell for
shellexpand
to use: