Comments (7)
promptStringOnce
only prompts for a string if it is not already set.
Do you already have data.email
set in your configuration? If so, promptStringOnce
will return the existing value (which might not be [email protected]
) instead of prompting.
from chezmoi.
The example of my post was extracted from the documentation in the Create a config file on a new machine automatically section. Am I wrong to assume that after executing the execute-template
subcommand with the promptStringOnce flag, the value should have been overridden and it should not have used the default value of the function call?
[data]
email = "Email address"
from chezmoi.
Am I wrong to assume that after executing the
execute-template
subcommand with the promptStringOnce flag, the value should have been overridden and it should not have used the default value of the function call?
Yes.
promptString
always asks for a string. promptStringOnce
asks for a string if there is no existing value. If you already have a config file, then there is probably already an existing value.
Breaking the arguments to promptStringOnce
down:
promptStringOnce map path prompt [default]
map and path tell chezmoi where to find the existing value.
prompt is the prompt for the user if there is no existing value.
default is the default value if the user hits enter in response to the prompt.
In the case of
promptStringOnce . "email" "Email address"
map is .
and path is email
which means that chezmoi is looking up the .email
template variable. If you already have a config file with data.email
set then the .email
template variable is already set.
from chezmoi.
My bad. The problem was that I never actually ran chezmoi init
after creating that template, I was only running chezmoi execute-template --init
, I guess that execution defined the value, that's probably why promptStringOnce was not firing up.
Thank you so much! Sorry for the trouble.
from chezmoi.
I just tested this with interesting results.
- First, I made sure that the ~/.config/chezmoi/chezmoi.toml file does not exist
- I ran the execute-template function, but the template still returned the default value:
email = "Email address"
- I ran chezmoi init, and promptStringOnce ran, I set the value as [email protected].
- After executing the template again, I got the value in chezmoi.toml as expected.
- However, when that file did not exist, I never got the value from the command parameter, only the default one from the template.
kali@kali:~/.local/share/chezmoi$ rm ~/.config/chezmoi/chezmoi.toml
kali@kali:~/.local/share/chezmoi$ rm ~/.config/chezmoi/chezmoi.toml
rm: cannot remove '/home/kali/.config/chezmoi/chezmoi.toml': No such file or directory
❌ kali@kali:~/.local/share/chezmoi$ chezmoi execute-template --verbose --init --promptString [email protected] < ~/.local/share/chezmoi/.chezmoi.toml.tmpl
[data]
email = "Email address"%
kali@kali:~/.local/share/chezmoi$ chezmoi init
# Here the promptStringOnce ran, and I set the value
kali@kali:~/.local/share/chezmoi$ cat /home/kali/.config/chezmoi/chezmoi.toml
[data]
email = "[email protected]"%
kali@kali:~/.local/share/chezmoi$ chezmoi execute-template --verbose --init --promptString [email protected] < ~/.local/share/chezmoi/.chezmoi.toml.tmpl
[data]
email = "[email protected]"%
from chezmoi.
The value passed to the --promptString
flag is the prompt, not the key. i.e. I think you want:
$ chezmoi execute-template --verbose --init --promptString 'Email [email protected]' < ~/.local/share/chezmoi/.chezmoi.toml.tmpl
Note --promptString 'Email [email protected]'
instead of --promptString [email protected]
.
from chezmoi.
Thank you so much. I completely misunderstood the flag. I thought that this --promptString [email protected]
was supposed to override the value of the email
variable.
from chezmoi.
Related Issues (20)
- Config variables `autoAdd = true` and `autoCommit = true` don't seem to add or commit changes HOT 2
- bitwarden and bitwardenFields template functions seems not working HOT 2
- Optional speed up to chezmoi doctor
- Chezmoi cd exits git bash in windows terminal HOT 2
- Raspberry Pi Illegal Operation HOT 4
- Flag --managed to `add` all managed files HOT 4
- Release appears to be corrupt HOT 2
- Adding .local/bin hangs HOT 3
- `chezmoi edit <target file>` hardlink functionality breaks across btrfs subvolumes HOT 1
- tests hang when umask is 027
- Chezmoi by default pipes to `less` pager HOT 2
- `scriptTempDir` configuration variable is ignored for `modify_` scripts HOT 5
- Integrate 1Password SDKs to remove dependency on CLI HOT 2
- Support .bz2 for external archives HOT 2
- Of autoCommit and branches HOT 2
- Is there a way to avoid being prompted for password manager password on every operation? HOT 6
- hooks.read-source-state.pre cannot find script HOT 7
- `chezmoi apply` overwrites any files that were placed by chezmoi, no matter the source HOT 2
- One-line binary install handle ARM(v7) HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chezmoi.