From 5bd6bd8a625011979b428d9bc94c06353c4c9247 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 11 Mar 2025 23:21:36 +0100
Subject: [PATCH] Fix borgplom script;

---
 testing/home/desktop/.local/bin/borgplom | 67 +++++++++++++-----------
 1 file changed, 36 insertions(+), 31 deletions(-)

diff --git a/testing/home/desktop/.local/bin/borgplom b/testing/home/desktop/.local/bin/borgplom
index 277fbb3..4010829 100755
--- a/testing/home/desktop/.local/bin/borgplom
+++ b/testing/home/desktop/.local/bin/borgplom
@@ -6,39 +6,44 @@ NAME_REPO=borg
 NAME_ARCHIVE=orgdir
 
 if [ "$1" = "orgpull" ]; then
-    ls -1 "${PATH_BORGKEYS}/" | while read FILENAME; do
+    PATH_PIPE="/tmp/pipe_$(date +'%s')"
+    mkfifo "${PATH_PIPE}"
+    ls -1 "${PATH_BORGKEYS}/" > "${PATH_PIPE}" &
+    while read FILENAME; do
         NAME_SERVER=$(echo "${FILENAME}" | sed 's/.*@//')
-        if ! ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
+        if ping -c1 -W2 "${NAME_SERVER}" > /dev/null 2>&1; then
+            break
+        else
             echo "Cannot reach ${NAME_SERVER}, skipping."
-            continue
         fi
-        REPO="${NAME_SERVER}:${NAME_REPO}"
-        while true; do
-            if [ -z "${BORG_PASSPHRASE}" ]; then
-                stty -echo
-                printf "Borg passphrase: "
-                read passphrase
-                stty echo
-                printf "\n"
-                export BORG_PASSPHRASE="${passphrase}"
-            fi 
-            set +e
-            ARCHIVES=$(borg list "${REPO}")  # separate step so we may fail early on bad passphrase
-            RESULT=$?
-            set -e
-            if [ "${RESULT}" = "0" ]; then
-                break
-            elif [ "${RESULT}" != "2" ]; then
-                echo "Aborting due to unexpected ${NAME_BORGAPP} error."
-                exit 1
-            else
-                export BORG_PASSPHRASE=""
-            fi
-        done
-        ARCHIVE=$(echo "${ARCHIVES}" | grep "${NAME_ARCHIVE}" | tail -1 | cut -f1 -d' ')
-        echo "Pulling archive: ${ARCHIVE}"
-        cd /
-        borg extract --verbose "${REPO}::${ARCHIVE}"
-        break
+    done < "${PATH_PIPE}"
+    rm "${PATH_PIPE}"
+    REPO="${NAME_SERVER}:${NAME_REPO}"
+    while true; do
+        if [ -z "${BORG_PASSPHRASE}" ]; then
+            stty -echo
+            printf "Borg passphrase: "
+            read passphrase
+            stty echo
+            printf "\n"
+            export BORG_PASSPHRASE="${passphrase}"
+        fi
+        set +e
+        ARCHIVES=$(borg list "${REPO}")  # separate step so we may fail early on bad passphrase
+        RESULT=$?
+        set -e
+        if [ "${RESULT}" = "0" ]; then
+            break
+        elif [ "${RESULT}" != "2" ]; then
+            echo "Aborting due to unexpected ${NAME_BORGAPP} error."
+            exit 1
+        else
+            export BORG_PASSPHRASE=""
+        fi
     done
+    ARCHIVE=$(echo "${ARCHIVES}" | grep "${NAME_ARCHIVE}" | tail -1 | cut -f1 -d' ')
+    echo "Pulling archive: ${ARCHIVE}"
+    cd /
+    borg extract --verbose "${REPO}::${ARCHIVE}"
+    break
 fi
-- 
2.30.2