From ce9f17523856359636154fdd6cfed58e086758c6 Mon Sep 17 00:00:00 2001 From: "exe.dev user" Date: Fri, 1 May 2026 20:28:45 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20reorder=20phase=203=20=E2=80=94=20Docker?= =?UTF-8?q?=20before=20OneCLI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OneCLI runs in a Docker container, so Docker must be installed first. Reordered: Docker (3a) → OneCLI (3b) → Auth (3c) → Skills (3d) → Build (3e). OneCLI install now skips with a clear message if Docker isn't available. Co-Authored-By: Claude Opus 4.6 (1M context) --- migrate-v2.sh | 67 +++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/migrate-v2.sh b/migrate-v2.sh index edae888..d790c32 100644 --- a/migrate-v2.sh +++ b/migrate-v2.sh @@ -372,7 +372,27 @@ echo echo "$(bold 'Phase 3: Infrastructure')" echo -# 3a. OneCLI — detect or install via setup step +# 3a. Docker — install if missing (OneCLI needs it) +if command -v docker >/dev/null 2>&1; then + DOCKER_V=$(docker --version 2>/dev/null | head -1) + step_ok "Docker available $(dim "($DOCKER_V)")" + log "Docker: $DOCKER_V" +else + step_info "Installing Docker…" + DOCKER_LOG="$STEPS_DIR/3a-docker.log" + if bash setup/install-docker.sh > "$DOCKER_LOG" 2>&1; then + hash -r 2>/dev/null || true + step_ok "Docker installed" + STEP_RESULTS["3a-docker"]="success" + log "Docker: installed" + else + step_fail "Docker install failed $(dim "(see $DOCKER_LOG)")" + STEP_RESULTS["3a-docker"]="failed" + log "Docker: FAILED" + fi +fi + +# 3b. OneCLI — detect or install via setup step (requires Docker) ONECLI_OK=false ONECLI_URL_FROM_ENV=$(grep '^ONECLI_URL=' .env 2>/dev/null | head -1 | sed 's/^ONECLI_URL=//') ONECLI_URL_CHECK="${ONECLI_URL_FROM_ENV:-http://127.0.0.1:10254}" @@ -381,38 +401,41 @@ if curl -sf "${ONECLI_URL_CHECK}/health" >/dev/null 2>&1; then step_ok "OneCLI running at $(dim "$ONECLI_URL_CHECK")" ONECLI_OK=true log "OneCLI: running at $ONECLI_URL_CHECK" -else - # Run the setup onecli step — it handles install, reuse, and health checks +elif command -v docker >/dev/null 2>&1; then step_info "Setting up OneCLI…" - ONECLI_LOG="$STEPS_DIR/3a-onecli.log" - ONECLI_ERR="$STEPS_DIR/3a-onecli.err" + ONECLI_LOG="$STEPS_DIR/3b-onecli.log" + ONECLI_ERR="$STEPS_DIR/3b-onecli.err" if pnpm exec tsx setup/index.ts --step onecli > "$ONECLI_LOG" 2>"$ONECLI_ERR"; then step_ok "OneCLI ready" ONECLI_OK=true - STEP_RESULTS["3a-onecli"]="success" + STEP_RESULTS["3b-onecli"]="success" log "OneCLI: installed/configured" else step_fail "OneCLI setup failed $(dim "(see $ONECLI_LOG)")" - STEP_RESULTS["3a-onecli"]="failed" + STEP_RESULTS["3b-onecli"]="failed" log "OneCLI: FAILED" fi +else + step_fail "OneCLI needs Docker $(dim "(install Docker first)")" + STEP_RESULTS["3b-onecli"]="failed" + log "OneCLI: skipped (no Docker)" fi -# 3b. Anthropic credential — run the auth setup step if no credential found +# 3c. Anthropic credential — run the auth setup step if no credential found if grep -qE '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)=' .env 2>/dev/null; then step_ok "Anthropic credential found in .env" log "Anthropic credential: found in .env" elif [ "$ONECLI_OK" = "true" ]; then step_info "Registering Anthropic credential…" - AUTH_LOG="$STEPS_DIR/3b-auth.log" - AUTH_ERR="$STEPS_DIR/3b-auth.err" + AUTH_LOG="$STEPS_DIR/3c-auth.log" + AUTH_ERR="$STEPS_DIR/3c-auth.err" if pnpm exec tsx setup/index.ts --step auth > "$AUTH_LOG" 2>"$AUTH_ERR"; then step_ok "Anthropic credential registered" - STEP_RESULTS["3b-auth"]="success" + STEP_RESULTS["3c-auth"]="success" log "Anthropic credential: registered via auth step" else step_fail "Auth setup failed $(dim "(see $AUTH_LOG)")" - STEP_RESULTS["3b-auth"]="failed" + STEP_RESULTS["3c-auth"]="failed" log "Anthropic credential: FAILED" fi else @@ -420,26 +443,6 @@ else log "Anthropic credential: skipped (no OneCLI)" fi -# 3c. Docker — install if missing -if command -v docker >/dev/null 2>&1; then - DOCKER_V=$(docker --version 2>/dev/null | head -1) - step_ok "Docker available $(dim "($DOCKER_V)")" - log "Docker: $DOCKER_V" -else - step_info "Installing Docker…" - DOCKER_LOG="$STEPS_DIR/3c-docker.log" - if bash setup/install-docker.sh > "$DOCKER_LOG" 2>&1; then - hash -r 2>/dev/null || true - step_ok "Docker installed" - STEP_RESULTS["3c-docker"]="success" - log "Docker: installed" - else - step_fail "Docker install failed $(dim "(see $DOCKER_LOG)")" - STEP_RESULTS["3c-docker"]="failed" - log "Docker: FAILED" - fi -fi - # 3d. Copy container skills from v1 that v2 doesn't have V1_SKILLS_DIR="$V1_PATH/container/skills" V2_SKILLS_DIR="$PROJECT_ROOT/container/skills"