name: "Build devcontainers"
on:
  push:
    branches:
      - master
      - develop
jobs:
  build-devcontainers:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: DeterminateSystems/nix-installer-action@v16
      - name: Build
        run: |
          nix build -f ./devcontainers --print-out-paths --no-link > build_paths
        env:
          NIXPKGS_ALLOW_UNFREE: "1"
      - name: Deploy devcontainers to GitHub registry
        run: |
          echo "${{ secrets.GITHUB_TOKEN }}" | skopeo login ghcr.io -u ${{ github.actor }} --password-stdin

          for image_archive in $(< build_paths); do
            CONTAINER_TAG=$(echo $image_archive | awk 'match($0, /docker-image-(\S+).tar.gz/, arr) {print arr[1]}')
            skopeo copy \
            "docker-archive:${image_archive}" "docker://ghcr.io/${{ github.repository }}:$CONTAINER_TAG"
          done
