feat: auto-install all deps in install script#146
Merged
Conversation
- Step 0: auto-install Homebrew (macOS), git (Xcode CLT / apt / dnf) - Step 2: auto-install Docker (brew/dmg on macOS, get.docker.com on Linux). Handles first-launch ToS dialog, daemon startup, sudo fallback on Linux, Docker Hub rate limit errors - Step 3: pull images separately with clear rate limit / auth errors - Add requirements.txt documenting every dependency All POSIX-compatible (#!/bin/sh) per #144. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
dd697d2 to
834f6ce
Compare
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a POSIX-compatible progress bar during brew cask install. Cleans stale Docker symlinks in /usr/local/bin before installing to prevent "already a Binary" errors from previous installs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stop backgrounding brew install — it needs to show progress and handle sudo prompts. Clean stale symlinks without sudo first, only escalate if needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove any existing Docker symlinks/binaries (not just broken ones) and uninstall any failed previous cask before attempting brew install. Handles partial installs that leave valid but conflicting symlinks. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use osascript to activate Docker Desktop window so the user sees the license agreement dialog immediately. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
uname reports x86_64 when running under Rosetta on Apple Silicon, causing the wrong Docker Desktop (Intel) to be installed. Now uses sysctl hw.optional.arm64 to detect the real hardware. Also switches from brew cask to direct DMG download for Docker Desktop to avoid brew architecture mismatches entirely. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Switch _download from silent curl to --progress-bar so users see download progress for large files like Docker Desktop DMG. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Docker Desktop only creates /usr/local/bin/docker on first launch, not during install. Now launches it immediately after copying to /Applications and waits for the docker CLI to become available. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds ripgrep to Step 0 prerequisites. Installs via brew on macOS, apt/dnf/apk on Linux. Non-fatal if install fails (just warns). Also audited all external tool usage in the CLI — the full list is: git, rg, docker, curl, node. All now installed by the script. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Docker Desktop on macOS can take 2-3 minutes on first launch to accept license, initialize, and create CLI symlinks. Now waits up to 3 min for symlinks, falls through to ToS prompt if needed, never errors while Docker Desktop is still initializing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…eady One simple flow: install, open, tell user to accept license, wait up to 6 minutes for docker CLI + daemon to both be ready. No premature failures. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Docker Desktop fails to start if old processes are still running. Now kills all Docker-related processes before install and before first launch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wait 90 seconds quietly first. If Docker starts up in that time (license already accepted), no prompt shown. Only show the license setup box if Docker hasn't become ready after 90 seconds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The root cause of all Docker detection failures: command -v docker does not work in a piped sh subshell (curl | sh) even when the binary exists at /usr/local/bin/docker. Now uses find_docker() which checks absolute paths directly. Works on macOS, Linux, Windows. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
If docker binary exists AND docker info succeeds, skip install, skip launching, skip waiting, skip license prompt. Just prints 'Docker is ready' and moves on. Only enters the install/launch flow when Docker is actually missing or the daemon isn't running. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
Generated with Claude Code