diff --git a/Brewfile b/Brewfile index 52005f8..e09fb9c 100644 --- a/Brewfile +++ b/Brewfile @@ -3,6 +3,7 @@ cask_args appdir: "/Applications" # === 非公式 tap === # Homebrew 公式に無い macOS アプリ用の tap # cask の追加・更新は dotfiles 側の pkg-add / cask-update skill で行う +tap 'dicklesworthstone/tap' tap 'u-ichi/tap' tap 'manaflow-ai/cmux' tap 'terraform-linters/tap' @@ -21,6 +22,8 @@ cask 'antigravity-cli' brew 'bash' brew 'bun' brew 'cargo-nextest' +brew 'ccusage' +brew 'dicklesworthstone/tap/cass' brew 'direnv' brew 'docker-compose' brew 'fish' diff --git a/README.md b/README.md index 7e1bae4..4783247 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,12 @@ Fish 設定と Fisher プラグインだけを復元する場合: ./install.sh fish ``` +Brewfile に登録した CLI だけを導入する場合: + +```bash +./install.sh brew dicklesworthstone/tap/cass ccusage +``` + 日次メンテナンスだけを同期し直す場合: ```bash diff --git a/docs/architecture.md b/docs/architecture.md index 6ed521d..6d2b3dc 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -86,7 +86,7 @@ dotfiles 側では扱わない。詳細は claude.codex の `install.sh` と `do | スクリプト | 役割 | |-----------|------| -| `install.sh` | 初回セットアップと日常更新の単一エントリポイント。Brewfile 適用 / 更新、設定ファイルコピー、Git ローカル設定の対話的入力、AWS 設定の再展開、Claude Code / Herdr / Herdr plugin / mkcert / Fisher / Terraform / npm / Backlog.md / Playwright browser binary / Python tools の同期、macOS defaults と Spotlight 除外の適用、日次メンテナンス LaunchAgent 登録を行う。第 1 引数で MODE (`antigravity` / `orca` / `herdr` / `gws` / `python` / `npm` / `backlog` / `playwright` / `vscode` / `fish` / `docker` / `maintenance` / `spotlight`) を指定するとそのモジュールだけ再実行する | +| `install.sh` | 初回セットアップと日常更新の単一エントリポイント。Brewfile 適用 / 更新、設定ファイルコピー、Git ローカル設定の対話的入力、AWS 設定の再展開、Claude Code / Herdr / Herdr plugin / mkcert / Fisher / Terraform / npm / Backlog.md / Playwright browser binary / Python tools の同期、macOS defaults と Spotlight 除外の適用、日次メンテナンス LaunchAgent 登録を行う。第 1 引数で MODE (`brew` / `antigravity` / `orca` / `herdr` / `gws` / `python` / `npm` / `backlog` / `playwright` / `vscode` / `fish` / `docker` / `maintenance` / `spotlight`) を指定するとそのモジュールだけ再実行する | | `lib/backlog.sh` | Backlog.md の公式 `origin` を確認し、通常は `origin/main` を取得してビルドする。managed manifest がある場合は指定した base commit を一時展開し、管理済み patch を順番に適用してビルドする | | `lib/antigravity.sh` | Brewfile から Antigravity CLI だけを導入し、管理する設定項目を利用者の設定へ反映する | | `lib/herdr.sh` | Herdr 本体の存在確認、Herdrfile の plugin 同期、Herdr 専用 mode の設定コピーを行う。版不一致は非破壊の警告として扱い、`all` では後続の dotfiles 同期を継続する | diff --git a/install.sh b/install.sh index 1468138..bbea73a 100755 --- a/install.sh +++ b/install.sh @@ -37,6 +37,14 @@ update_npm_globals() { fi } +# Brewfileに登録した非公式formulaだけを信頼対象にする。 +trust_brewfile_formulas() { + local formula + while IFS= read -r formula; do + brew trust --formula "$formula" + done < <(sed -n "s/^brew '\([^']*\/[^']*\/[^']*\)'$/\1/p" "$1") +} + sync_homebrew() { if ! command -v brew &>/dev/null; then echo "エラー: Homebrew がインストールされていません" @@ -52,6 +60,7 @@ sync_homebrew() { # `brew trust` は idempotent (既に trusted なら何もしない)。 brew trust --tap u-ichi/tap 2>/dev/null || true + trust_brewfile_formulas "$SCRIPT_DIR/Brewfile" brew bundle --file="$SCRIPT_DIR/Brewfile" brew cleanup echo "" @@ -173,6 +182,27 @@ restore_fisher_plugins() { echo "" } +# 指定したformulaだけをBrewfileから適用する。 +if [ "$MODE" = "brew" ]; then + shift + if [ "$#" -eq 0 ]; then + echo "使い方: $0 brew ..." >&2 + exit 1 + fi + mkdir -p "$SCRIPT_DIR/tmp" + selected_brewfile="$(mktemp "$SCRIPT_DIR/tmp/brew-selected.XXXXXX")" + trap 'rm -f "$selected_brewfile"' EXIT + for package in "$@"; do + if ! grep -Fx "brew '$package'" "$SCRIPT_DIR/Brewfile" >> "$selected_brewfile"; then + echo "エラー: Brewfile に $package が登録されていません" >&2 + exit 1 + fi + done + trust_brewfile_formulas "$selected_brewfile" + brew bundle --file="$selected_brewfile" --no-upgrade + exit 0 +fi + if [ "$MODE" = "antigravity" ]; then ensure_antigravity sync_antigravity_settings @@ -279,7 +309,7 @@ fi if [ "$MODE" != "all" ]; then echo "エラー: 未知の MODE です: $MODE" - echo "利用可能: all, antigravity, orca, herdr, gws, python, npm, backlog, playwright, vscode, fish, karabiner, docker, maintenance, spotlight" + echo "利用可能: all, brew, antigravity, orca, herdr, gws, python, npm, backlog, playwright, vscode, fish, karabiner, docker, maintenance, spotlight" exit 1 fi