name: build Linux packages with Open Build Service

on:
  pull_request_target:
    branches: [ "master" ]
env:
  CARGO_TERM_COLOR: always

jobs:
  approve-obs-build:
    name: "approval"
    runs-on: ubuntu-latest
    steps:
      - name: Approve
        run: echo OBS build CI test runs need to be approved by a maintainer.
  build-obs-binary:
    environment:
      name: obs-build-env
    strategy:
      matrix:
        include:
          - repo: Fedora_40
            spec: librashader.spec
            can_fail: true
            name: Fedora 40 (.rpm)
          - repo: xUbuntu_24.04
            spec: librashader.spec
            can_fail: true
            name: Ubuntu 24.04 (.deb)
    runs-on: ubuntu-latest
    needs: [approve-obs-build]
    continue-on-error: ${{ matrix.can_fail }}
    name: ${{ matrix.name }}
    container: 
      image: fedora:39
      options: --privileged
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Install OSC and dependencies
        env:
          OBS_CONFIG: ${{ secrets.OBS_CONFIG }}
        run: |
          sudo dnf install -y osc obs-service-obs_scm obs-service-cargo_vendor cargo python3-zstandard
          mkdir -p ~/.config/osc
          echo "$OBS_CONFIG" > ~/.config/osc/oscrc
      - name: Checkout Open Build Service repository
        run: |
          osc co home:chyyran:librashader/librashader
      - name: Copy spec from repository
        run: |
          cp -r ./pkg/obs/ home:chyyran:librashader/librashader/
          sed -r -i 's/(<param name="revision">)(.+)(<\/param>)/<param name="revision">${{ github.sha }}<\/param>/g' home:chyyran:librashader/librashader/_service
      - name: Vendor sources for Open Build Service
        run: |
          cd home:chyyran:librashader/librashader/
          osc service mr
      - name: Build package
        run: |
          cd home:chyyran:librashader/librashader/
          osc build --no-verify --trust-all-projects ${{ matrix.repo }} x86_64 ${{ matrix.spec }}