From e7b84ace4045c8feaebf2c8667ff666458acbd9d Mon Sep 17 00:00:00 2001 From: schmeeve Date: Wed, 13 May 2026 17:27:05 -0700 Subject: [PATCH] new tool --- link-envirs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 link-envirs diff --git a/link-envirs b/link-envirs new file mode 100755 index 0000000..698fab1 --- /dev/null +++ b/link-envirs @@ -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