new tool
This commit is contained in:
48
link-envirs
Executable file
48
link-envirs
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
FORCE=false
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
--force|-f) FORCE=true ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
ENVIRS="${HOME}/git/environs"
|
||||||
|
|
||||||
|
for envdir in "${ENVIRS}"/*/; do
|
||||||
|
[ -d "${envdir}" ] || continue
|
||||||
|
repo=$(basename "${envdir}")
|
||||||
|
target="${HOME}/git/${repo}"
|
||||||
|
|
||||||
|
src="${envdir}env.dev"
|
||||||
|
link="${target}/.env"
|
||||||
|
|
||||||
|
if [ ! -f "${src}" ]; then
|
||||||
|
echo " Skipping ${repo}: no env.dev in environs"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "${target}" ]; then
|
||||||
|
echo " Skipping ${repo}: ${target} does not exist"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -L "${link}" ] || [ -e "${link}" ]; then
|
||||||
|
if [ -L "${link}" ] && [ "$(readlink "${link}")" = "${src}" ]; then
|
||||||
|
echo " OK ${repo}: already linked"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if $FORCE; then
|
||||||
|
bak="${link}.bak"
|
||||||
|
echo " Force ${repo}: moving aside → $(basename "${bak}")"
|
||||||
|
mv "${link}" "${bak}"
|
||||||
|
else
|
||||||
|
echo " Skipping ${repo}: ${link} exists (use --force to override)"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s "${src}" "${link}"
|
||||||
|
echo " Linked ${repo}: env.dev → .env"
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user