supabase-plus 0.6.2

An extra set of tools for managing Supabase projects going beyond the possibilities of regular Supabase CLI
on:
  push:
    branches:
      - master

jobs:
  precheck:
    runs-on: ubuntu-latest

    outputs:
      should_continue: ${{ steps.decision.outputs.continue }}
      local_version: ${{ steps.decision.outputs.version }}

    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - uses: pozetroninc/github-action-get-latest-release@master
        id: remote
        with:
          owner: dsplce-co
          repo: supabase-plus
          excludes: prerelease, draft

      - name: Crate Version
        id: local
        uses: colathro/crate-version@2.0.0

      - run: echo remote ${{ steps.remote.outputs.release }}
      - run: echo local ${{ steps.local.outputs.version }}

      - id: decision
        env:
          LOCAL_VERSION: ${{ steps.local.outputs.version }}
        run: |
          if [ "${{ steps.remote.outputs.release }}" = "${{ steps.local.outputs.version }}" ]; then
            echo "continue=false" >> $GITHUB_OUTPUT
          else
            echo "continue=true" >> $GITHUB_OUTPUT
            echo "version=$LOCAL_VERSION" >> "$GITHUB_OUTPUT"
          fi

  matrix:
    runs-on: ubuntu-latest
    needs: precheck
    if: ${{ needs.precheck.outputs.should_continue == 'true' }}

    outputs:
      matrix: ${{ steps.matrix.outputs.matrix }}

    steps:
      - run: echo ${{ needs.precheck.outputs.local_version }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Install toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Generate build matrix
        uses: reitermarkus/rust-build-matrix@main
        id: matrix

  build:
    runs-on: ${{ matrix.os }}
    needs: matrix
    strategy:
      matrix:
        include: ${{ fromJSON(needs.matrix.outputs.matrix) }}

    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - run: |
          rustup target add "${target}"
          cargo build --release --target "${target}"
          tar -czf "sbp-${target}.tar.gz" -C "target/${target}/release" sbp

        env:
          target: ${{ matrix.target }}

      - uses: actions/upload-artifact@v4
        with:
          name: "sbp-${{env.target}}.tar.gz"
          path: "sbp-${{env.target}}.tar.gz"
          retention-days: 1

        env:
          target: ${{ matrix.target }}

  publish:
    runs-on: ubuntu-latest
    needs: [build, precheck]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - run: echo ${{ needs.precheck.outputs.local_version }}

      - name: Release
        uses: v1olen/version-release-github-action@main
        env:
          version: ${{ needs.precheck.outputs.local_version }}
        with:
          download-pattern: "sbp-*.tar.gz"
          release-version: "${{env.version}}"
          create-latest: "false"

      - uses: ryohidaka/action-cargo-publish@v0.1.0
        with:
          path: "."
          token: ${{ secrets.CARGO_REGISTRY_TOKEN }}