--- name: Update Casks concurrency: jimeh/homebrew-emacs-builds/update-casks on: workflow_dispatch: inputs: cask: description: "Specific cask to update (all if empty)" required: false default: "" extraArgs: description: "Extra arguments passed to emacs-builder cask update" required: false default: "" jobs: emacs-builder: runs-on: "macos-14" steps: - id: builder_ref run: | BUILDER_REF=v0.6.60 echo "ref=${BUILDER_REF}" >> "$GITHUB_OUTPUT" - name: Cache emacs-builder (${{ runner.arch }}) id: cache uses: actions/cache@v4 with: path: bin/emacs-builder key: emacs-builder-${{ runner.arch }}-${{ steps.builder_ref.outputs.ref }}-0-bin - name: Checkout build-emacs-for-macos repo if: steps.cache.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: repository: jimeh/build-emacs-for-macos ref: ${{ steps.builder_ref.outputs.ref }} fetch-depth: 0 - name: Setup Go if: steps.cache.outputs.cache-hit != 'true' uses: actions/setup-go@v5 with: go-version-file: "go.mod" - name: Build emacs-builder tool if: steps.cache.outputs.cache-hit != 'true' run: make build - name: Ensure emacs-builder is executable if: steps.cache.outputs.cache-hit != 'true' run: chmod +x bin/emacs-builder - run: bin/emacs-builder --version - name: Upload emacs-builder artifact uses: actions/upload-artifact@v4 with: name: emacs-builder-${{ runner.arch }} path: bin/emacs-builder if-no-files-found: error live-check: runs-on: "macos-14" outputs: tap_sha: ${{ steps.tap_sha.outputs.sha }} steps: - name: Checkout tap repository uses: actions/checkout@v4 with: ref: main path: tap - name: Store tap Git SHA id: tap_sha run: | echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - name: Symlink homebrew tap run: | mkdir -p "$(brew --repo)/Library/Taps/jimeh" ln -s "${{ github.workspace }}/tap" \ "$(brew --repo)/Library/Taps/jimeh/homebrew-emacs-builds" - name: brew livecheck (all casks) if: ${{ github.event.inputs.cask == '' }} run: >- brew livecheck --json --quiet --tap jimeh/emacs-builds | tee livecheck-results.json - name: brew livecheck (specific cask) if: ${{ github.event.inputs.cask != '' }} run: >- brew livecheck --json --quiet jimeh/emacs-builds/${{ github.event.inputs.cask }} | tee livecheck-results.json - name: Upload livecheck-results.json artifact uses: actions/upload-artifact@v4 with: name: livecheck-results.json path: livecheck-results.json if-no-files-found: error update-casks: runs-on: "macos-14" needs: [emacs-builder, live-check] steps: - name: Checkout tap repository uses: actions/checkout@v4 with: ref: ${{ needs.live-check.outputs.tap_sha }} path: tap - name: Download pre-built emacs-builder artifact uses: actions/download-artifact@v4 with: name: emacs-builder-${{ runner.arch }} path: bin - name: Ensure emacs-builder is executable run: chmod +x bin/emacs-builder - name: Download livecheck-results.json artifact uses: actions/download-artifact@v4 with: name: livecheck-results.json path: ./ - name: Update casks run: >- bin/emacs-builder cask --builds-repository jimeh/emacs-builds update --templates-dir tap/templates ${{ github.event.inputs.extraArgs }} livecheck-results.json env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} update-meta: runs-on: "macos-14" needs: [update-casks] permissions: contents: write steps: - name: Checkout tap repository main branch uses: actions/checkout@v4 with: ref: main path: tap - name: Symlink homebrew tap run: | mkdir -p "$(brew --repo)/Library/Taps/jimeh" ln -s "${{ github.workspace }}/tap" \ "$(brew --repo)/Library/Taps/jimeh/homebrew-emacs-builds" - name: Checkout tap repository meta branch uses: actions/checkout@v4 with: ref: meta path: meta - name: Install meta dependencies run: brew bundle working-directory: meta - name: Update meta files run: make update working-directory: meta - name: commit and push changes to meta branch uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "chore(meta): update meta files" repository: meta branch: meta commit_user_name: github-actions[bot] commit_user_email: github-actions[bot]@users.noreply.github.com commit_author: >- github-actions[bot] skip_dirty_check: false