fmq 0.0.2

FrontMatter querying made easy
Documentation
name: Release

on:
  push:
    tags:
      - "v*"

permissions: write-all

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
  extract_version:
    name: Extract version
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.version.outputs.version }}
    steps:
      - uses: actions/checkout@v3
      - name: Extract version
        id: "version"
        run: |
          VERSION=$(grep '^version' Cargo.toml | awk -F '"' '{ print $2 }')
          echo version: $VERSION
          echo "::set-output name=version::$VERSION"

  create_release:
    name: Create release
    needs: ["extract_version"]
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - name: Create new release
        if: ${{ github.ref == 'refs/heads/master' }}
        run: |
          COMMIT_HASH=$(git rev-list --max-count=1 HEAD)
          echo "Creating release: v${{ needs.extract_version.outputs.version }}"
          echo "for hash: $COMMIT_HASH"
          gh release create v${{ needs.extract_version.outputs.version }} \
            -t v${{ needs.extract_version.outputs.version }} \
            --notes "Automatically released by CI" \
            --prerelease \
            --target $COMMIT_HASH


  check_nix:
    name: Check
    runs-on: ubuntu-22.04
    steps:
      - name: git checkout
        uses: actions/checkout@v3
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@main
      - name: Set up Rust cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
          key: fmq-${{ hashFiles('**/Cargo.lock') }}

      - name: Check Nixpkgs inputs
        uses: DeterminateSystems/flake-checker-action@v4
        with:
          fail-mode: true

      # Nix-specific logic
      - name: Check formatting
        run: |
          nix develop --command \
            cargo fmt --check
      - name: Lint
        run: |
          nix develop --command \
            cargo clippy -- -D warnings
      - name: Test
        run: |
          nix develop --command \
            cargo test --release

  publish_crate:
    name: Publish crate
    needs: ["check_nix", "extract_version", "create_release"]
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - name: Print target version
        run: |
          echo Publishing version v${{ needs.extract_version.outputs.version }}
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@main
      - name: Build
        env:
          CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}
        run: |
          nix develop
          cargo build -r
          cargo publish --token ${CRATES_TOKEN}

  publish_to_aur:
    name: Publish to aur
    needs: ["check_nix", "extract_version", "create_release"]
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - name: Print target version
        run: |
          echo Using version v${{ needs.extract_version.outputs.version }}
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@main
      - name: Build binary
        run: nix build
      - uses: actions/upload-artifact@v2
        name: "Upload artifacts"
        with:
          name: Binary
          path: |
            result/bin/fmq
      - name: Upload artifacts to GH releases
        run: |
          gh release upload v${{ needs.extract_version.outputs.version }} \
          result/bin/fmq
      - name: Generate PKGBUILD
        run: |
          CHECKSUM=$(sha512sum result/bin/fmq | cut -d' ' -f1)
          echo $CHECKSUM
          README_CHECKSUM=$(sha512sum README.md | cut -d' ' -f1)
          echo $README_CHECKSUM
          RELEASE_TAG=${{ needs.extract_version.outputs.version }} CHECKSUM=$CHECKSUM README_CHECKSUM=$README_CHECKSUM ./ci/generate-pkgbuild.py

      - name: Publish to AUR
        uses: KSXGitHub/github-actions-deploy-aur@v2.7.0
        with:
          pkgname: fmq-bin
          pkgbuild: ./pkgbuild/fmq-bin/PKGBUILD
          commit_username: ${{ secrets.AUR_USERNAME }}
          commit_email: ${{ secrets.AUR_EMAIL }}
          ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
          commit_message: v${{ needs.extract_version.outputs.version }}



  linux_deb:
    name: Linux Debian Release
    needs: ["check_nix", "extract_version", "create_release"]
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - name: Print target version
        run: |
          echo Using version v${{ needs.extract_version.outputs.version }}
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@main
      - name: Build deb packages
        run: |
          nix develop
          cargo install cargo-deb --version 1.34.0
          cargo-deb
      - uses: actions/upload-artifact@v2
        name: "Upload artifacts"
        with:
          name: Debian Artifacts
          path: |
            target/debian/fmq_${{ needs.extract_version.outputs.version }}_amd64.deb
      - name: Upload artifacts to GH releases
        run: |
          gh release upload v${{ needs.extract_version.outputs.version }} \
          target/debian/fmq_${{ needs.extract_version.outputs.version }}_amd64.deb