Skip to content

Update Casks

Update Casks #2793

Workflow file for this run

---
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.57
echo "ref=$BUILDER_REF=v0" >> "$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.sha }}-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.sha }}
fetch-depth: 0
- name: Setup Go
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/setup-go@v5
with:
go-version: "1.23"
- 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] <github-actions[bot]@users.noreply.github.com>
skip_dirty_check: false