name: Build Zed.dmg

on:
  push:
    branches:
    - main
    - "v[0-9]+.[0-9]+.x"
  pull_request:

defaults:
  run:
    shell: bash -euxo pipefail {0}

concurrency:
  # Allow only one workflow per any non-`main` branch.
  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
  cancel-in-progress: true

env:
  RUST_BACKTRACE: 1
  COPT: '-Werror'

jobs:
  build-dmg:
    if: github.ref_name == 'main' || contains(github.event.pull_request.labels.*.name, 'run-build-dmg')
    runs-on:
      - self-hosted
      - test
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          clean: false
          submodules: 'recursive'

      - name: Install Rust
        run: |
          rustup set profile minimal
          rustup update stable

      - name: Install node
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Build dmg bundle
        run: ./script/bundle

      - name: Upload the build artifact
        uses: actions/upload-artifact@v3
        with:
          name: Zed_${{ github.event.pull_request.head.sha || github.sha }}.dmg
          path: ./target/release/Zed.dmg
