name: build container image
on:
  pull_request:
  push:
      branches:
        - main

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }}
  cancel-in-progress: true

jobs:
  container:
    runs-on: ubuntu-22.04
    permissions:
      id-token: write
      contents: read
      packages: write

    steps:
    - uses: actions/checkout@main
    - uses: DeterminateSystems/nix-installer-action@main
    - uses: DeterminateSystems/magic-nix-cache-action@main

    - name: Set up nix dev env
      run: nix develop --command echo 0
    - name: Build container image
      run: nix build .#container
    - name: Push container image on commits to main
      if: ${{ github.ref_name == 'main' }}
      run: |
        nix develop --ignore-environment --command skopeo copy --dest-creds="${{ github.repository_owner }}:${{ github.token }}" docker-archive:./result docker://ghcr.io/javierhonduco/lightswitch:main-${{ github.sha }}
    - name: Push container image on new releases
      if: ${{ github.ref_type == 'tag' }}
      run: |
        nix develop --ignore-environment --command skopeo copy --dest-creds="${{ github.repository_owner }}:${{ github.token }}" docker-archive:./result docker://ghcr.io/javierhonduco/lightswitch:${{ github.ref_name }}
        nix develop --ignore-environment --command skopeo copy --dest-creds="${{ github.repository_owner }}:${{ github.token }}" docker-archive:./result docker://ghcr.io/javierhonduco/lightswitch:latest