Files
ubuntu-post-install/services
Claude f61a2717bf Offer retry/fall-back-to-SFTP/skip when Garage isn't found for a mirror
Previously, if the additional-mirror S3/Garage check couldn't find
~/docker/garage/.env on the remote box, it just warned and silently
dropped the mirror — forcing a full re-run (and re-entering every
already-answered prompt: destinations, passwords, schedule, B2,
DR-spare, etc.) once Garage was actually installed.

Wrap the S3/SFTP branch in a loop so the "Garage isn't installed yet"
case now offers a real 3-way choice:
  1) install Garage in another session, then retry the same .env check
     without leaving this script
  2) fall back to SFTP for this one mirror, reusing the already-resolved
     destination host/port/user/mirror-name with no re-prompting
  3) skip just this mirror (default — safe for UNATTENDED, which
     resolves to this automatically since prompt_text returns its
     default without blocking)

Everything else install_backup() has already collected lives outside
this loop, so none of it is at risk regardless of which of the three
exits it via.

Verified against a standalone harness reproducing the state machine
with a mocked ssh (empty .env vs. populated .env after a simulated
install) and prompt_text, covering all three interactive choices, the
blank/Enter default, and UNATTENDED mode (confirms the blocking
"press Enter to retry" read is unreachable there since prompt_text
resolves choice 1's prompt to default "3" without waiting on stdin).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4k6J1qXXyYxhGEgnJaMvn
2026-08-15 12:45:29 +00:00
..