devcontainer-env 0.1.0

Bridge devcontainers and the host environment — run host commands with devcontainer service environments and automatically rewrite container service URLs to host ports
name: Release

on:
  push:
    branches: [main]

permissions:
  contents: write
  id-token: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-latest
    outputs:
      release_created: ${{ steps.release.outputs.release_created }}
      tag_name: ${{ steps.release.outputs.tag_name }}
    steps:
      - name: Create Release PR
        id: release
        uses: googleapis/release-please-action@v4
        with:
          manifest-file: .github/config/release-please-manifest.json
          config-file: .github/config/release-please-config.json
          target-branch: main

  build:
    needs: release-please
    if: ${{ needs.release-please.outputs.release_created }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            nix_system: x86_64-linux
          - os: macos-14
            nix_system: aarch64-darwin

    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@v21

      - name: Setup Nix Cache
        uses: DeterminateSystems/magic-nix-cache-action@v13

      - name: Build with Nix
        run: nix build . --system ${{ matrix.nix_system }}

      - name: Rename Binary
        run: cp result/bin/devcontainer-env result/bin/devcontainer-env-${{ matrix.nix_system }}

      - name: Upload Release Assets
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ needs.release-please.outputs.tag_name }}
          files: result/bin/devcontainer-env-${{ matrix.nix_system }}

  publish-crate:
    needs: release-please
    if: ${{ needs.release-please.outputs.release_created }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@v21

      - name: Setup Nix Cache
        uses: DeterminateSystems/magic-nix-cache-action@v13

      - name: Publish to Crates.io
        run: nix develop --command cargo publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}