fix: handle directory entries in install — rm -rf, ln -sfn
This commit is contained in:
@@ -21,12 +21,12 @@ while IFS= read -r rel || [ -n "$rel" ]; do
|
||||
mkdir -p "$BACKUP_DIR/$(dirname "$rel")"
|
||||
cp -a "$dest" "$BACKUP_DIR/$rel"
|
||||
echo " Backed up: $dest"
|
||||
rm -f "$dest"
|
||||
if [ -d "$dest" ]; then rm -rf "$dest"; else rm -f "$dest"; fi
|
||||
elif [ -L "$dest" ]; then
|
||||
rm "$dest"
|
||||
fi
|
||||
[[ "$rel" == .ssh/* ]] && chmod 600 "$src" 2>/dev/null || true
|
||||
ln -sf "$src" "$dest"
|
||||
ln -sfn "$src" "$dest"
|
||||
echo " Linked: ~/$rel"
|
||||
done < "$MANIFEST"
|
||||
|
||||
|
||||
@@ -385,12 +385,13 @@ cmd_install() {
|
||||
continue
|
||||
fi
|
||||
|
||||
# Back up conflicting file
|
||||
# Back up conflicting file/directory
|
||||
if [ -e "$dest" ] && [ ! -L "$dest" ]; then
|
||||
mkdir -p "$BACKUP_DIR/$(dirname "$rel")"
|
||||
cp -a "$dest" "$BACKUP_DIR/$rel"
|
||||
warn "Backed up existing $dest"
|
||||
rm -f "$dest"
|
||||
# rm -rf needed when $dest is a real directory (e.g. ~/.bashrc.d created manually)
|
||||
if [ -d "$dest" ]; then rm -rf "$dest"; else rm -f "$dest"; fi
|
||||
elif [ -L "$dest" ]; then
|
||||
rm "$dest"
|
||||
fi
|
||||
@@ -404,7 +405,8 @@ cmd_install() {
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -sf "$src" "$dest"
|
||||
# -n: treat dest as a file (don't place link inside) if dest is a dir symlink
|
||||
ln -sfn "$src" "$dest"
|
||||
success "Linked: ~/$rel → $src"
|
||||
(( count++ )) || true
|
||||
done < "$MANIFEST"
|
||||
@@ -968,12 +970,12 @@ while IFS= read -r rel || [ -n "\$rel" ]; do
|
||||
mkdir -p "\$BACKUP_DIR/\$(dirname "\$rel")"
|
||||
cp -a "\$dest" "\$BACKUP_DIR/\$rel"
|
||||
echo " Backed up: \$dest"
|
||||
rm -f "\$dest"
|
||||
if [ -d "\$dest" ]; then rm -rf "\$dest"; else rm -f "\$dest"; fi
|
||||
elif [ -L "\$dest" ]; then
|
||||
rm "\$dest"
|
||||
fi
|
||||
[[ "\$rel" == .ssh/* ]] && chmod 600 "\$src" 2>/dev/null || true
|
||||
ln -sf "\$src" "\$dest"
|
||||
ln -sfn "\$src" "\$dest"
|
||||
echo " Linked: ~/\$rel"
|
||||
done < "\$MANIFEST"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user