From 70013034361f0e5cd776bd2439bfa878c28f3ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20M=C3=BChl?= Date: Thu, 9 Apr 2026 17:11:21 +0200 Subject: [PATCH] feat(02-01): add --check mode for prerequisite verification --- claudebox.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/claudebox.sh b/claudebox.sh index b15ded8..efc6e43 100644 --- a/claudebox.sh +++ b/claudebox.sh @@ -16,6 +16,51 @@ while (( $# > 0 )); do esac shift done +export SKIP_AUDIT # consumed by Plan 02 audit display + +# --check: verify prerequisites and exit (D-10, UX-05) +if [[ "$CHECK_MODE" == true ]]; then + pass=true + green=$'\033[32m' red=$'\033[31m' yellow=$'\033[33m' reset=$'\033[0m' + + check_cmd() { + if command -v "$1" &>/dev/null; then + echo "${green}OK${reset} $1" >&2 + else + echo "${red}FAIL${reset} $1 -- not found" >&2 + pass=false + fi + } + + echo "claudebox prerequisites:" >&2 + echo "" >&2 + check_cmd bwrap + check_cmd claude + check_cmd git + check_cmd curl + check_cmd nix + + if [[ -d "$HOME/.claudebox" ]]; then + echo "${green}OK${reset} ~/.claudebox exists" >&2 + else + echo "${red}FAIL${reset} ~/.claudebox -- not found (will be created on first run)" >&2 + fi + + if [[ -v ANTHROPIC_API_KEY ]]; then + echo "${green}OK${reset} ANTHROPIC_API_KEY is set" >&2 + else + echo "${yellow}WARN${reset} ANTHROPIC_API_KEY is not set" >&2 + fi + + echo "" >&2 + if [[ "$pass" == true ]]; then + echo "${green}All checks passed.${reset}" >&2 + exit 0 + else + echo "${red}Some checks failed.${reset}" >&2 + exit 1 + fi +fi # SANDBOX_PATH is injected by flake.nix via makeBinPath (only runtimeInputs, no host PATH) # Resolve binary paths from runtimeInputs