1
0
forked from finn/tinyboard

syncthing.sh: fix remaining shell variable interpolation in python3 -c strings across add_device_by_pending, remove_device, and unshare_folder

This commit is contained in:
Justin Oros
2026-04-18 21:18:04 -07:00
parent 410def45c3
commit 0c784a672c

View File

@@ -96,20 +96,20 @@ add_device_by_pending() {
if [ ${#id_list[@]} -eq 1 ]; then
DEVICE_ID="${id_list[0]}"
local pending_name
pending_name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['${DEVICE_ID}'].get('name',''))")
pending_name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d[sys.argv[1]].get('name',''))" "$DEVICE_ID")
else
echo "Pending devices:"
local i=1
for id in "${id_list[@]}"; do
local name
name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['${id}'].get('name','(unknown)'))")
name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d[sys.argv[1]].get('name','(unknown)'))" "$id")
echo " $i) $name$id"
i=$((i+1))
done
read -rp "Choose [1-${#id_list[@]}]: " CHOICE
[[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le "${#id_list[@]}" ] || die "Invalid choice."
DEVICE_ID="${id_list[$((CHOICE-1))]}"
pending_name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['${DEVICE_ID}'].get('name',''))")
pending_name=$(echo "$pending" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d[sys.argv[1]].get('name',''))" "$DEVICE_ID")
fi
read -rp "Device name [${pending_name:-new-device}]: " DEVICE_NAME
@@ -185,9 +185,9 @@ for i, d in enumerate(json.load(sys.stdin), 1):
shared_folders=$(echo "$folders" | python3 -c "
import sys, json
folders = json.load(sys.stdin)
shared = [f['label'] or f['id'] for f in folders if any(dev['deviceID']=='${device_id}' for dev in f.get('devices',[]))]
shared = [f['label'] or f['id'] for f in folders if any(dev['deviceID']==sys.argv[1] for dev in f.get('devices',[]))]
print('\n'.join(shared))
")
" "$device_id")
if [ -n "$shared_folders" ]; then
warn "Device '${device_name}' is still sharing these folders:"
echo "$shared_folders" | sed 's/^/ /'
@@ -373,7 +373,7 @@ for i, f in enumerate(json.load(sys.stdin), 1):
local i=1
while IFS= read -r did; do
local dname
dname=$(echo "$devices" | python3 -c "import sys,json; devs=json.load(sys.stdin); match=[d['name'] for d in devs if d['deviceID']=='${did}']; print(match[0] if match else '${did}')")
dname=$(echo "$devices" | python3 -c "import sys,json; devs=json.load(sys.stdin); match=[d['name'] for d in devs if d['deviceID']==sys.argv[1]]; print(match[0] if match else sys.argv[1])" "$did")
echo " $i) $dname$did"
i=$((i+1))
done <<< "$shared_ids"
@@ -386,7 +386,7 @@ for i, f in enumerate(json.load(sys.stdin), 1):
local target_id
target_id=$(echo "$shared_ids" | sed -n "${D_CHOICE}p")
local target_name
target_name=$(echo "$devices" | python3 -c "import sys,json; devs=json.load(sys.stdin); match=[d['name'] for d in devs if d['deviceID']=='${target_id}']; print(match[0] if match else '${target_id}')")
target_name=$(echo "$devices" | python3 -c "import sys,json; devs=json.load(sys.stdin); match=[d['name'] for d in devs if d['deviceID']==sys.argv[1]]; print(match[0] if match else sys.argv[1])" "$target_id")
read -rp "Unshare '${folder_label}' from '${target_name}'? [y/N]: " CONFIRM
[[ "${CONFIRM,,}" == "y" ]] || { info "Aborted."; return; }