88 lines
3.2 KiB
Bash
88 lines
3.2 KiB
Bash
#!/usr/bin/env -S bash -c 'echo "Not a user script. source(aka .) only"'
|
|
# shellcheck disable=SC1090
|
|
|
|
if is_cmd 'chezmoi'; then
|
|
alias cz="chezmoi "
|
|
alias ll-cz='ll --color=always | grep -v remove_ '
|
|
|
|
eval "$( chezmoi completion "${SHELL##*/}" | sed -Ee 's/(complete -o default .* chezmoi)/\1 cz/' )"
|
|
|
|
export CHEZMOI_GITHUB_ACCESS_TOKEN={{- .githubToken | quote }}
|
|
|
|
CZG_ROOT="$(chezmoi git -- rev-parse --show-toplevel)"
|
|
alias czg="git --work-tree=$CZG_ROOT --git-dir=$CZG_ROOT/.git "
|
|
unset CZG_ROOT
|
|
|
|
complete -F _complete_alias czg
|
|
|
|
chezmoi() {
|
|
${SET_X:-:} -x
|
|
case "$1" in
|
|
cd) cz-cd "${2}" ;;
|
|
edit) ${VISUAL:-${EDITOR:-vi}} $(SET_X=':' chezmoi source-path "${@:2}") ;;
|
|
# source-path) printf '%s\n' "${@:2}" | xargs -r env chezmoi source-path ;;
|
|
*) env chezmoi "${@}" ;;
|
|
esac
|
|
${SET_X:-:} +x
|
|
}
|
|
cz-cd() { cd "$(chezmoi source-path ${1})"; }
|
|
czgcd() {
|
|
cd "$(SET_X=':' chezmoi git -- rev-parse --show-toplevel)${1:+/${1}}"
|
|
}
|
|
czedext() {
|
|
local CZ_EXT="$(find $(SET_X=':' chezmoi source-path) -mindepth 1 -maxdepth 1 -name '.chezmoiexternal.*')"
|
|
CZ_EXT="${CZ_EXT:-$(SET_X=':' chezmoi source-path "${@}")/.chezmoiexternal.yaml.tmpl}"
|
|
"${VISUAL:-${EDITOR:-vi}}" "${CZ_EXT}"
|
|
}
|
|
czed() {
|
|
local EDITLIST=() f _f
|
|
for _f in "${@}"; do
|
|
[[ -e "$_f" ]] || f="$(which "$_f")"
|
|
[[ -z "$f" ]] && is_cmd tv && f="$(tv "$_f")" || f=$_f
|
|
EDITLIST=( "${EDITLIST[@]}" "$f" )
|
|
done
|
|
EDITLIST=("${@}")
|
|
chezmoi edit "${EDITLIST[@]}" --apply --interactive
|
|
}
|
|
# CZ_EXTR is evaluated in .chezmoiexternal.yaml.
|
|
# By default, a very small portion of the externals are being
|
|
# evaluated, when CZ_EXTR is set to 1, full evaluation of the
|
|
# externals yaml is performed.
|
|
alias czx="CZ_EXTR=1 chezmoi "
|
|
|
|
function czu() {
|
|
local all=0 refresh=1 verbose='--verbose' debug='' prompts='--promptDefaults'
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
'--all') all=1 ;;
|
|
'--prompt') prompts='' ;;
|
|
'--no-refresh') refresh=0 ;;
|
|
'--quiet') verbose='' ;;
|
|
'--debug') debug='--debug' ;;
|
|
esac
|
|
shift
|
|
done
|
|
if [[ $all -eq 1 ]]; then
|
|
chezmoi upgrade
|
|
fi
|
|
chezmoi git -- pull --autostash --rebase \
|
|
&& chezmoi init $prompts $verbose $debug \
|
|
&& chezmoi status $verbose $debug \
|
|
&& chezmoi apply --interactive --verbose $verbose $debug
|
|
|
|
if [[ $all -eq 1 ]]; then
|
|
CZ_EXTR=1
|
|
CZ_EZA_PREFIX=""
|
|
chezmoi status $verbose $debug \
|
|
|| (CZ_EZA_PREFIX='./' && chezmoi status $verbose $debug ) && chezmoi apply $verbose $debug
|
|
fi
|
|
|
|
[[ $refresh -ne 1 ]] || (printf "restarting shell...\n" >&2 || exec $SHELL -l)
|
|
|
|
}
|
|
alias czxu="cz upgrade && czg pull && cz init --verbose && czx apply --verbose && _r"
|
|
alias cz-reset-home="(czgcd && cd chezmoi.roots && RESET=reset SRC_DIR=_src.all ./symclone.sh _home && RESET=reset ./symclone.sh _home.macos)"
|
|
fi
|
|
|
|
# vim: set ft=sh sw=4 sts=4 et:
|