Summary
自作 macOS アプリを Homebrew の 1 コマンドでインストール可能にする。アプリのリポジトリ自体を homebrew-<名前> にリネームして cask と GitHub Releases を同居させる self-tap 方式のセットアップと、バージョン更新、旧 tap…
schroneko/skills
自作 macOS アプリを Homebrew の 1 コマンドでインストール可能にする。アプリのリポジトリ自体を homebrew-<名前> にリネームして cask と GitHub Releases を同?
npx skills add schroneko/skills --skill homebrew-self-tap
自作 macOS アプリを Homebrew の 1 コマンドでインストール可能にする。アプリのリポジトリ自体を homebrew-<名前> にリネームして cask と GitHub Releases を同居させる self-tap 方式のセットアップと、バージョン更新、旧 tap…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Homebrew formula maintenance workflows for Python CLIs and taps, including version bumps, SHA/r…
314 installsCreate, update, validate, and submit Homebrew Casks (macOS and Linux/AppImage). Use when the us…
125 installsOther skills from schroneko/skills · top by installs.
npx skills add schroneko/skills
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
6,378 B
SUMMARY.md
514 B
自作 macOS アプリを、tap 専用リポジトリを増やさずに brew install の 1 コマンドで配布する。
homebrew-<短い名前> にする。brew install --cask user/<短い名前>/<トークン> の自動 tap は GitHub の homebrew-<短い名前> という名前のリポジトリだけを探すため、このリネームが 1 コマンド化の必須条件Casks/<トークン>.rb とバイナリ zip(GitHub Releases)をアプリのリポジトリ自身に置く導入例:
schroneko/homebrew-exbright → brew install --cask schroneko/exbright/exbrightschroneko/homebrew-nicevoice → brew install --cask schroneko/nicevoice/nicevoicegh repo rename homebrew-NAME -R OWNER/OLD-REPO --yes
git -C LOCAL_DIR remote set-url origin [email protected]:OWNER/homebrew-NAME.git
mv LOCAL_DIR GHQ_ROOT/github.com/OWNER/homebrew-NAME
GitHub は旧 URL からリダイレクトするため既存リンクは壊れないが、cask とスクリプト内の URL は新名に更新する。
ditto -c -k --keepParent PATH/TO/App.app App-VERSION.zip
shasum -a 256 App-VERSION.zip
gh release create vVERSION -R OWNER/homebrew-NAME --title "App VERSION" --notes "..." App-VERSION.zip
Casks/NAME.rb をリポジトリ直下に置く。
cask "NAME" do
version "1.0.0"
sha256 "SHA256_OF_ZIP"
url "https://github.com/OWNER/homebrew-NAME/releases/download/v#{version}/App-#{version}.zip"
name "AppName"
desc "One-line description"
homepage "https://github.com/OWNER/homebrew-NAME"
app "App.app"
postflight do
system_command "/usr/bin/xattr",
args: ["-dr", "com.apple.quarantine", "/Applications/App.app"],
sudo: false
end
uninstall quit: "BUNDLE_IDENTIFIER"
zap trash: [
"~/Library/Preferences/BUNDLE_IDENTIFIER.plist",
]
end
postflight の quarantine 除去は ad-hoc 署名または未 notarize のアプリに必要。Developer ID 署名 + notarization 済みなら省略してよいbrew install --cask OWNER/NAME/NAME に更新するbrew install --cask OWNER/NAME/NAME
tap の登録と trust は install 時に自動で行われる。/Applications への配置とアプリのバージョンを確認する。
gh release create vNEW_VERSION ... で公開するCasks/NAME.rb の version と sha256 を書き換えて commit、push するbrew upgrade --cask NAME で更新できるリポジトリ内に release スクリプトがある場合は、cask 更新とリリース作成を同一リポジトリ内で完結させる形に書く。実例は schroneko/homebrew-nicevoice の Scripts/release.sh。
旧 tap(URL 指定 tap や削除済み homebrew-tap 経由)でインストール済みのマシンでは、次の順で入れ替える。
osascript -e 'tell application "AppName" to quit'
brew uninstall --cask OWNER/OLD-TAP/NAME
brew untap OWNER/OLD-TAP
brew install --cask OWNER/NAME/NAME
アクセシビリティや入力監視などの TCC 権限は、インストーラーや CLI からプログラムで付与できない。これは macOS の設計で、例外は MDM の PPPC プロファイル配布か、SIP を無効化した上での TCC.db 直接編集だけ。どちらも個人向け Homebrew 配布では使えない前提で設計する。
tccutil にできるのは reset だけで、grant はできないcaveats を書き、インストール直後のターミナルに権限付与の手順を表示するcaveats <<~EOS
AppName requires the macOS Accessibility permission.
Grant it in System Settings > Privacy & Security > Accessibility.
EOS
AXIsProcessTrustedWithOptions のプロンプトで設定画面へ誘導し、権限なしでも起動自体はできるようにするbrew tap は匿名の https clone で取得するため、プライベートリポジトリのままだと could not read Username for 'https://github.com'; で失敗する。公開できないアプリはこの配布方式を使えないbrew tap OWNER/NAME の短縮形に homebrew- プレフィックスなしのリポジトリは使えない。URL 指定 tap は 2 コマンドになるため採用しないbrew install 時の自動 trust で通常は解決するが、既存 tap で警告が出たら brew trust --cask OWNER/TAP/NAME を案内するbrew tap はリポジトリを丸ごと clone するため、アプリのソースも利用者に落ちる。リポジトリが巨大な場合はサイズに注意するurl はリネーム後の正式リポジトリ名を指す。旧名 URL もリダイレクトで動くが、正式名に揃える