Files
dotwryn/setup/filesystem/git.zsh
T
2026-09-21 06:48:49 -06:00

82 lines
2.4 KiB
Bash

#####################################################################
setup.filesystem.git() {
local sources_dir="${XDG_DATA_HOME:-${HOME}/.local/share}/project-source-code"
SOURCE_DIR="${DOTWRYN_SETUP__DOTWRYN}" \
TARGET_DIR="${sources_dir}/yage/dotwryn" \
REMOTE_UPSTREAMS=(
'git@github.com:wrynegade/dotwryn.git'
'git@yage.io:wrynegade/dotwryn.git'
'git@bitbucket.org:wrynegade/dotwryn.git'
) setup.filesystem.git._.remotes '.wryn'
SOURCE_DIR="${DOTWRYN_SETUP__DOTWRYN}/zsh/plugins/code-activator" \
TARGET_DIR="${sources_dir}/zsh/code-activator" \
REMOTE_UPSTREAMS=(
'git@yage.io:zsh/code-activator.git'
'git@github.com:wrynegade/code-activator.git'
) setup.filesystem.git._.remotes 'zsh-plugins/code-activator'
SOURCE_DIR="${DOTWRYN_SETUP__DOTWRYN}/zsh/plugins/scwrypts" \
TARGET_DIR="${sources_dir}/zsh/scwrypts" \
REMOTE_UPSTREAMS=(
'git@yage.io:zsh/scwrypts'
'git@github.com:wrynegade/scwrypts'
) setup.filesystem.git._.remotes 'zsh-plugins/scwrypts'
return 0
}
setup.filesystem.git._.remotes() {
: \
&& [[ "${SOURCE_DIR}" ]] \
&& [[ "${TARGET_DIR}" ]] \
&& [[ "${#REMOTE_UPSTREAMS[@]}" -gt 0 ]] \
|| return 1 \
;
[[ "${1}" ]] && echo.status "updating remotes for '${1}'"
git -C "${SOURCE_DIR}" remote rm upstream 2>/dev/null
git -C "${SOURCE_DIR}" remote add upstream "${REMOTE_UPSTREAMS[1]}"
local remote_upstream
for remote_upstream in "${REMOTE_UPSTREAMS[@]}"
do
git -C "${SOURCE_DIR}" remote set-url --add --push upstream "${remote_upstream}"
case "${remote_upstream}" in
( git@github.com:* )
git -C "${SOURCE_DIR}" remote rm github 2>/dev/null
git -C "${SOURCE_DIR}" remote add github "${remote_upstream}"
;;
( git@yage.io:* )
git -C "${SOURCE_DIR}" remote rm yage 2>/dev/null
git -C "${SOURCE_DIR}" remote add yage "${remote_upstream}"
;;
( git@bitbucket.org:* )
git -C "${SOURCE_DIR}" remote rm bitbucket 2>/dev/null
git -C "${SOURCE_DIR}" remote add bitbucket "${remote_upstream}"
;;
esac
done
unset remote_upstream
SOURCE_DIR="${SOURCE_DIR}" TARGET_DIR="${TARGET_DIR}" setup.filesystem.git._.link-to-projects \
|| echo.warning "failed to link '${TARGET_DIR}'"
return 0
}
setup.filesystem.git._.link-to-projects() {
[[ "${TARGET_DIR}" ]] && [[ "${SOURCE_DIR}" ]] \
|| return 1
{
mkdir -p -- "${TARGET_DIR}"
rm -- "${TARGET_DIR}/code"
ln -s -- "${SOURCE_DIR}" "${TARGET_DIR}/code"
} &>/dev/null
}