Standardize hooks, add better key.txt bootstrapper, add update hook to detect --init

This commit is contained in:
2024-11-07 21:59:56 -06:00
parent a55abff9ac
commit a3601e0a35
4 changed files with 24 additions and 11 deletions

View File

@@ -56,5 +56,9 @@ encryption = "age"
identity = "{{ .chezmoi.homeDir }}/key.txt" identity = "{{ .chezmoi.homeDir }}/key.txt"
recipient = "age1s3ctpj9lafl6qwyvd89sn448us7gdzd53d8yyhsc7zny78c0k4sqerrkze" recipient = "age1s3ctpj9lafl6qwyvd89sn448us7gdzd53d8yyhsc7zny78c0k4sqerrkze"
[hooks.init.pre]
command = "{{ .chezmoi.sourceDir }}/hooks/.init_pre.sh"
[hooks.update.pre]
command = "{{ .chezmoi.sourceDir }}/hooks/.update_pre.sh"
[hooks.read-source-state.pre] [hooks.read-source-state.pre]
command = "{{ .chezmoi.sourceDir }}/.before-source-state.sh" command = "{{ .chezmoi.sourceDir }}/hooks/.read-source-state_pre.sh"

11
home/hooks/.init_pre.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# note: CHEZMOI_UPDATE will be set if this was invoked indirectly by 'chezmoi update --init'
set -eu
# While key.txt is managed by Chezmoi, it's required for encrypted operations and needed to bootstrap other operations.
if [ ! -f ~/key.txt ]; then
rbw get "key.txt (age)" --field notes >>~/key.txt
rbw get "key.txt (age)" --field password >>~/key.txt
echo "key.txt bootstrapped"
fi

View File

@@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
set -eu set -eu
apt_update() { apt_update() {
@@ -61,18 +61,9 @@ install_inotify() {
fi fi
} }
# While key.txt is managed by Chezmoi, it's required for encrypted operations and needed to bootstrap other operations.
provide_key_txt() {
if [ ! -f "~/key.txt" ]; then
rbw get "key.txt (age)" --field notes >~/key.txt
rbw get "key.txt (age)" --field password >~/key.txt
fi
}
install_inotify install_inotify
install_age install_age
install_cargo_binstall install_cargo_binstall
install_rbw install_rbw
rbw login rbw login
rbw sync rbw sync
provide_key_txt

7
home/hooks/.update_pre.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
# chezmoi update --init does not invoke the 'hooks.init.pre' hook, so we do it ourselves
if grep -q 'init' <<<$CHEZMOI_ARGS; then
# CHEZMOI_UPDATE is just a hint in case we need to know if we're updating
CHEZMOI_UPDATE=1 $(dirname $0)/.init_pre.sh
fi