#!/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 "
    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) cd "$(SET_X=':' command chezmoi source-path ${2})" ;;
            edit) ${VISUAL:-${EDITOR:-vi}} $(SET_X=':' chezmoi source-path "${@:2}") ;;
            source-path) printf '%s\n' "${@:2}" | xargs -r chezmoi source-path ;;
            *) command chezmoi "${@}" ;;
        esac
        ${SET_X:-:} +x
    }
    czcd() { chezmoi cd "${@}"; }
    czedext() {
        local CZ_EXT="$(find $(command chezmoi source-path) -mindepth 1 -maxdepth 1 -name '.chezmoiexternal.*')"
        CZ_EXT="${CZ_EXT:-$(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
    }
    alias czx="CZ_EXTR=1 chezmoi "
fi

# vim: set ft=bash sw=4 sts=4 et: