fix: deploy-to uses scp -r for directories (fixes .bashrc.d upload)
This commit is contained in:
@@ -944,11 +944,17 @@ cmd_deploy_to() {
|
||||
|
||||
local backed_up=0
|
||||
for rel in "${remote_paths[@]}"; do
|
||||
# Check if the file actually exists on the remote before fetching
|
||||
if ssh "$target" "[ -f ~/$rel ]" 2>/dev/null; then
|
||||
# Check if the file/dir actually exists on the remote before fetching
|
||||
if ssh "$target" "[ -e ~/$rel ]" 2>/dev/null; then
|
||||
local local_dest="$backup_base/$rel"
|
||||
mkdir -p "$(dirname "$local_dest")"
|
||||
if scp -q "$target:~/$rel" "$local_dest" 2>/dev/null; then
|
||||
# Use -r for directories, plain scp for files
|
||||
if ssh "$target" "[ -d ~/$rel ]" 2>/dev/null; then
|
||||
mkdir -p "$local_dest"
|
||||
if scp -rq "$target:~/$rel/." "$local_dest/" 2>/dev/null; then
|
||||
(( backed_up++ )) || true
|
||||
fi
|
||||
elif scp -q "$target:~/$rel" "$local_dest" 2>/dev/null; then
|
||||
(( backed_up++ )) || true
|
||||
fi
|
||||
fi
|
||||
@@ -1018,12 +1024,23 @@ cmd_deploy_to() {
|
||||
fi
|
||||
|
||||
if $dry_run; then
|
||||
echo " [dry-run] ~/$rel"
|
||||
echo " [dry-run] ~/$rel$([ -d "$src" ] && echo '/')"
|
||||
else
|
||||
# Ensure parent directory exists on remote
|
||||
local parent; parent="$(dirname "$rel")"
|
||||
[[ "$parent" != "." ]] && ssh "$target" "mkdir -p ~/$parent"
|
||||
scp -q "$src" "$target:~/$rel"
|
||||
if [ -d "$src" ]; then
|
||||
# For directories: remove stale dest first (avoids double-nesting on re-run)
|
||||
# then scp -r into the parent so the dir name is preserved correctly.
|
||||
ssh "$target" "rm -rf ~/$rel"
|
||||
if [[ "$parent" == "." ]]; then
|
||||
scp -rq "$src" "$target:~/"
|
||||
else
|
||||
ssh "$target" "mkdir -p ~/$parent"
|
||||
scp -rq "$src" "$target:~/$parent/"
|
||||
fi
|
||||
else
|
||||
[[ "$parent" != "." ]] && ssh "$target" "mkdir -p ~/$parent"
|
||||
scp -q "$src" "$target:~/$rel"
|
||||
fi
|
||||
success "Deployed: ~/$rel"
|
||||
(( deployed++ )) || true
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user