fix: harden installer symlink logic and interactive sourcing
- install-claude-profiles: distinguish broken symlink vs real dir vs free path via -L/-e, repoint existing links with ln -sfn, warn instead of silently skipping when target is a non-symlink dir. - profiles.sh: only set -euo pipefail when sourced non-interactively so sourcing in an interactive shell doesn't clobber session settings. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d49906a061
commit
35b2da39d2
2 changed files with 9 additions and 2 deletions
|
|
@ -11,7 +11,12 @@ ALIAS_LINE="source $TARGET_REPO/shell/aliases.sh"
|
||||||
mkdir -p "$TARGET_DIR"
|
mkdir -p "$TARGET_DIR"
|
||||||
|
|
||||||
if [[ "$REPO_DIR" != "$TARGET_REPO" ]]; then
|
if [[ "$REPO_DIR" != "$TARGET_REPO" ]]; then
|
||||||
if [[ ! -e "$TARGET_REPO" ]]; then
|
if [[ -L "$TARGET_REPO" ]]; then
|
||||||
|
ln -sfn "$REPO_DIR" "$TARGET_REPO"
|
||||||
|
elif [[ -e "$TARGET_REPO" ]]; then
|
||||||
|
echo "Warning: $TARGET_REPO exists and is not a symlink;" >&2
|
||||||
|
echo " aliases will point there. Remove it to repoint to $REPO_DIR." >&2
|
||||||
|
else
|
||||||
ln -s "$REPO_DIR" "$TARGET_REPO"
|
ln -s "$REPO_DIR" "$TARGET_REPO"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
# Only enforce strict mode when sourced non-interactively, so sourcing this
|
||||||
|
# file in an interactive shell doesn't clobber the user's session settings.
|
||||||
|
[[ $- == *i* ]] || set -euo pipefail
|
||||||
|
|
||||||
repo_root() {
|
repo_root() {
|
||||||
local script_dir
|
local script_dir
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue