fix(kit): clean temporary data after sandbox copy

This commit is contained in:
2026-08-28 09:42:29 +02:00
parent 1905357b64
commit bdd5acfe21

View File

@@ -15,6 +15,10 @@ set -o pipefail
readonly KIT_PATH="$HOME/.sbx/kits/hypoport.ai" readonly KIT_PATH="$HOME/.sbx/kits/hypoport.ai"
readonly TEMPLATE='127.0.0.1:62735/finmas.de/mux033/opencode-ops:latest' readonly TEMPLATE='127.0.0.1:62735/finmas.de/mux033/opencode-ops:latest'
# This is intentionally global because the EXIT cleanup function runs after
# `main` has returned and therefore cannot access `main`'s local variables.
tmp=''
require_command() { require_command() {
local command_name="$1" local command_name="$1"
local message="$2" local message="$2"
@@ -79,6 +83,15 @@ prompt_component() {
done done
} }
cleanup_temporary_directory() {
# EXIT traps run after `main` returns, so a variable declared local inside
# `main` is no longer available. `${tmp:-}` also keeps nounset from
# turning normal script completion into an error when no copy was made.
if [[ -n "${tmp:-}" ]]; then
rm -rf -- "$tmp"
fi
}
main() { main() {
# Check dependencies before asking questions. A missing tool should not # Check dependencies before asking questions. A missing tool should not
# leave the user halfway through an interactive setup. # leave the user halfway through an interactive setup.
@@ -193,7 +206,7 @@ main() {
done done
fi fi
local tmp='' api_key local api_key
if [[ "$build_from_scratch" == false ]]; then if [[ "$build_from_scratch" == false ]]; then
# `sbx cp` needs a host-side intermediary. `mktemp` gives concurrent # `sbx cp` needs a host-side intermediary. `mktemp` gives concurrent
# runs separate directories, and the EXIT trap removes the copy even # runs separate directories, and the EXIT trap removes the copy even
@@ -202,7 +215,7 @@ main() {
printf 'Unable to create a temporary directory.\n' >&2 printf 'Unable to create a temporary directory.\n' >&2
exit 1 exit 1
} }
trap 'rm -rf "${tmp:?}"' EXIT trap cleanup_temporary_directory EXIT
# Copy before creating the new sandbox so a failed creation cannot # Copy before creating the new sandbox so a failed creation cannot
# destroy the only temporary copy of the source data. # destroy the only temporary copy of the source data.