Update Homebrew Cask #20
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
| name: Update Homebrew Cask | |
| on: | |
| release: | |
| types: [published] # Триггер при публикации релиза | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version to update (leave empty to use package.json)' | |
| required: false | |
| type: string | |
| default: '' | |
| permissions: | |
| contents: write | |
| actions: write | |
| jobs: | |
| update-cask: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout SwitchShuttle repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Get version | |
| id: version | |
| run: | | |
| if [ -n "${{ github.event.inputs.version }}" ]; then | |
| VERSION="${{ github.event.inputs.version }}" | |
| echo "Using manual version: $VERSION" | |
| elif [ "${{ github.event_name }}" = "release" ]; then | |
| VERSION="${{ github.event.release.tag_name }}" | |
| # Убираем префикс app-v если есть | |
| VERSION=${VERSION#app-v} | |
| echo "Using release version: $VERSION" | |
| else | |
| VERSION=$(node -p "require('./package.json').version") | |
| echo "Using version from package.json: $VERSION" | |
| fi | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| echo "Version: $VERSION" | |
| - name: Check if releases exist | |
| run: | | |
| VERSION=${{ steps.version.outputs.version }} | |
| X64_URL="https://github.com/s00d/switchshuttle/releases/download/app-v$VERSION/switch-shuttle_${VERSION}_x64.dmg" | |
| AARCH64_URL="https://github.com/s00d/switchshuttle/releases/download/app-v$VERSION/switch-shuttle_${VERSION}_aarch64.dmg" | |
| echo "Checking Intel release: $X64_URL" | |
| if ! curl --output /dev/null --silent --head --fail "$X64_URL"; then | |
| echo "❌ Intel release not found: $X64_URL" | |
| exit 1 | |
| fi | |
| echo "✅ Intel release found" | |
| echo "Checking Apple Silicon release: $AARCH64_URL" | |
| if ! curl --output /dev/null --silent --head --fail "$AARCH64_URL"; then | |
| echo "❌ Apple Silicon release not found: $AARCH64_URL" | |
| exit 1 | |
| fi | |
| echo "✅ Apple Silicon release found" | |
| - name: Calculate SHA256 hashes | |
| id: hashes | |
| run: | | |
| VERSION=${{ steps.version.outputs.version }} | |
| X64_URL="https://github.com/s00d/switchshuttle/releases/download/app-v$VERSION/switch-shuttle_${VERSION}_x64.dmg" | |
| AARCH64_URL="https://github.com/s00d/switchshuttle/releases/download/app-v$VERSION/switch-shuttle_${VERSION}_aarch64.dmg" | |
| echo "Calculating Intel SHA256..." | |
| X64_SHA256=$(curl -sL "$X64_URL" | shasum -a 256 | cut -d' ' -f1) | |
| echo "Intel SHA256: $X64_SHA256" | |
| echo "Calculating Apple Silicon SHA256..." | |
| AARCH64_SHA256=$(curl -sL "$AARCH64_URL" | shasum -a 256 | cut -d' ' -f1) | |
| echo "Apple Silicon SHA256: $AARCH64_SHA256" | |
| echo "x64_sha256=$X64_SHA256" >> $GITHUB_OUTPUT | |
| echo "aarch64_sha256=$AARCH64_SHA256" >> $GITHUB_OUTPUT | |
| - name: Checkout homebrew-switchshuttle repository | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: s00d/homebrew-switchshuttle | |
| token: ${{ secrets.HOMEBREW_TOKEN }} | |
| path: homebrew-switchshuttle | |
| - name: Update cask file | |
| run: | | |
| VERSION=${{ steps.version.outputs.version }} | |
| X64_SHA256=${{ steps.hashes.outputs.x64_sha256 }} | |
| AARCH64_SHA256=${{ steps.hashes.outputs.aarch64_sha256 }} | |
| cd homebrew-switchshuttle/Casks | |
| # Update version | |
| sed -i "s/version \"[^\"]*\"/version \"$VERSION\"/" switchshuttle.rb | |
| # Update SHA256 hashes using awk for more reliable replacement | |
| awk -v x64_sha="$X64_SHA256" -v aarch64_sha="$AARCH64_SHA256" ' | |
| /sha256 "/ { | |
| if (++count == 1) { | |
| gsub(/sha256 "[^"]*"/, "sha256 \"" x64_sha "\"") | |
| } else if (count == 2) { | |
| gsub(/sha256 "[^"]*"/, "sha256 \"" aarch64_sha "\"") | |
| } | |
| } | |
| { print } | |
| ' switchshuttle.rb > switchshuttle_temp.rb && mv switchshuttle_temp.rb switchshuttle.rb | |
| echo "Updated cask with version $VERSION" | |
| echo "Intel SHA256: $X64_SHA256" | |
| echo "Apple Silicon SHA256: $AARCH64_SHA256" | |
| - name: Commit and push changes | |
| run: | | |
| cd homebrew-switchshuttle | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add Casks/switchshuttle.rb | |
| git commit -m "Update SwitchShuttle to v${{ steps.version.outputs.version }}" | |
| git push origin main | |
| - name: Create summary | |
| run: | | |
| echo "## ✅ Homebrew Cask Updated Successfully!" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Version:** ${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY | |
| echo "**Intel SHA256:** ${{ steps.hashes.outputs.x64_sha256 }}" >> $GITHUB_STEP_SUMMARY | |
| echo "**Apple Silicon SHA256:** ${{ steps.hashes.outputs.aarch64_sha256 }}" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Users can now install with:" >> $GITHUB_STEP_SUMMARY | |
| echo "```bash" >> $GITHUB_STEP_SUMMARY | |
| echo "brew tap s00d/switchshuttle" >> $GITHUB_STEP_SUMMARY | |
| echo "brew install --cask switchshuttle" >> $GITHUB_STEP_SUMMARY | |
| echo "```" >> $GITHUB_STEP_SUMMARY |