74 lines
1.4 KiB
Bash
74 lines
1.4 KiB
Bash
# completion
|
|
(
|
|
set -euo pipefail
|
|
|
|
CHEZMOI_PATH="$(command -v chezmoi 2> /dev/null)"
|
|
|
|
COMPLETION_FILE="${ZSH_COMPLETIONS_DIR}/_chezmoi"
|
|
if [ -r "$COMPLETION_FILE" ]; then
|
|
zstat -H COMPLETION_FILE_STAT "$COMPLETION_FILE"
|
|
zstat -H CHEZMOI_FILE_STAT "${CHEZMOI_PATH}"
|
|
|
|
if [ "${COMPLETION_FILE_STAT[ctime]}" -ge "${CHEZMOI_FILE_STAT[ctime]}" ]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
chezmoi completion zsh > "$COMPLETION_FILE"
|
|
chmod +x "$COMPLETION_FILE"
|
|
)
|
|
|
|
# auto update
|
|
(
|
|
set -euo pipefail
|
|
|
|
zstat -H LAST_PULL_STAT "$(chezmoi git rev-parse -- --show-toplevel)/.git/FETCH_HEAD"
|
|
|
|
# has the chezmoi repo been pulled in the last 24 hours?
|
|
if [ "${LAST_PULL_STAT[ctime]}" -gt $((EPOCHSECONDS-86400)) ]; then
|
|
exit 0
|
|
fi
|
|
|
|
echo 'Checking if Chezmoi has updates...'
|
|
chezmoi git pull -- --rebase > /dev/null
|
|
if [ "$(chezmoi status)" = "" ]; then
|
|
echo 'nope! Good bye!'
|
|
# there is nothing different between chezmoi and what is
|
|
# applied to this machine
|
|
exit 0
|
|
fi
|
|
|
|
while true; do
|
|
read -r 'CONTINUE?Chezmoi has updates, review now? [y/N] '
|
|
|
|
case "$CONTINUE" in
|
|
'y'|'Y'|'YES'|'yes'|'Yes')
|
|
break
|
|
;;
|
|
|
|
'n'|'N'|'NO'|'no'|'No'|'')
|
|
echo 'not applying changes'
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
chezmoi diff
|
|
|
|
while true; do
|
|
read -r 'APPLY?apply? [y/N] '
|
|
|
|
case "$APPLY" in
|
|
'y'|'Y'|'YES'|'yes'|'Yes')
|
|
echo 'applying changes'
|
|
chezmoi apply
|
|
exit 0
|
|
;;
|
|
|
|
'n'|'N'|'NO'|'no'|'No'|'')
|
|
echo 'not applying changes'
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
)
|