if [[ -n "$(which-command chezmoi)" ]]; then
    export CHEZMOIROOT="$(chezmoi source-path)"
    export CZ="$CHEZMOIROOT"
    export CZ_X="$(readlink -f $CHEZMOIROOT/../_externals)"

    alias czcd="cd $CZ"
    alias czxcd="cd $CZ_X"
    
    function cz() { chezmoi "${@}"; }
    function czx() {
        chezmoi --source $CZ_X --config $HOME/.config/chezmoi.externals/config.toml "${@}"
    }

    alias czs="cz status "
    function czg() {
        cz git -- "${@}"
    }
    #alias czg="cz git -- "
    alias czgs="cz git -- status "
    alias cza="cz apply && exec $SHELL"
    alias czu="cz upgrade && cz update && exec $SHELL "
    alias czxu="cz upgrade && cz update && czx apply && exec $SHELL "
    
    alias cz-refresh="czs | cut -d\  -f2 | grep '^\.sz\.shrc\.d' | xargs cz forget --force; cz add ~/.sz.shrc.d --recursive; cz status; cz git status"
    alias cz-commit="cz git -- commit -a "

    function cz-remove-missing() {
        pushd ~ > /dev/null
        changes=$(cz status | sed -n 's/^DA[ \t]\+//p')
        for c in $changes; do
            cz rm $c
        done
        popd > /dev/null
    }

    function cz-add-changes() {
        pushd ~ > /dev/null
        changes=$(cz status | sed -n 's/^MM[ \t]\+//p')
        for c in $changes; do
            echo Adding $c
            cz add $c
        done
        popd > /dev/null
    }

    function cz-set-ssh-github() {
        cz git -- remote set-url origin "$( \
            cz git -- remote get-url origin \
                | sed 's|https://github.com/|git@github.com:|' \
            )"
        cz git -- remote get-url origin
    }

    function cz-set-https-github() {
        cz git -- remote set-url origin "$( \
            cz git -- remote get-url origin \
                | sed 's|git@github.com:|https://github.com/|' \
            )"
        cz git -- remote get-url origin
    }
fi