#!/bin/bash # Builds fake borg/docker/mysql/mariadb executables into $1 so restore.sh # can be exercised without real infrastructure. Each mock logs its # invocation to $1/mock.log. setup_mock_bin() { local dir="$1" mkdir -p "$dir" local mocklog="$dir/mock.log" : > "$mocklog" cat > "$dir/borg" <> "$mocklog" case "\$1" in list) echo "host-2026-01-01T00-00-00" echo "host-2026-06-01T00-00-00" ;; extract) shift paths=() for a in "\$@"; do case "\$a" in -*) ;; *::*) ;; *) paths+=("\$a") ;; esac done for p in "\${paths[@]}"; do if [[ "\$p" == *.* ]]; then mkdir -p "\$(dirname "\$p")" printf 'mock-content\n' > "\$p" else mkdir -p "\$p" touch "\$p/RESTORED_MARKER" fi done ;; *) ;; esac exit 0 EOF cat > "$dir/docker" <> "$mocklog" case "\$1" in inspect) if [[ "\$*" == *"State.Running"* ]]; then echo true else echo healthy fi ;; start|stop) exit 0 ;; exec) case "\$*" in *"command -v mariadb"*) exit 0 ;; *) cat >/dev/null 2>&1 || true; exit 0 ;; esac ;; *) ;; esac exit 0 EOF cat > "$dir/mysql" <> "$mocklog" cat >/dev/null 2>&1 || true exit 0 EOF cp "$dir/mysql" "$dir/mariadb" chmod +x "$dir/borg" "$dir/docker" "$dir/mysql" "$dir/mariadb" }