garde-actix-web 0.3.0

Actix-web garde wrapper
Documentation
name: Draft release

on:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always

jobs:
  draft:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - uses: ./.github/actions/gitlog
        name: Get changed commits
        id: gitlog
        with:
          output-file: ./draft-gitlog.md

      - name: Prepare changes
        run: |
          echo "## What's New :gem: :new: :tada:" > ./draft-changes.md
          cat < ./draft-gitlog.md >> ./draft-changes.md

      - name: Get release info
        id: release_info
        run: |
          version=$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | .version')
          prerelease=false
          if [[ "$version" =~ .*-.* ]]; then
            prerelease=true
          fi

          echo "is_prerelease=$prerelease" >> $GITHUB_OUTPUT
          echo "version=$version" >> $GITHUB_OUTPUT

      - name: Add full change log link
        run: |
          echo -e "#### Full [change log](${{ github.server_url }}/${{ github.repository }}/compare/${{ steps.gitlog.outputs.last_release }}...${{ steps.release_info.outputs.version }})" >> ./draft-changes.md

      - name: Check existing release
        id: existing_release
        run: |
          if git tag | grep -e ^${{ steps.release_info.outputs.version }}$ > /dev/null; then 
            echo "Tag tag with ${{ steps.release_info.outputs.version }} already exists, cannot draft a release for already existing tag!, Consider upgrading versions to Cargo.toml file"
            echo "is_new=false" >> $GITHUB_OUTPUT
          else 
            echo "is_new=true" >> $GITHUB_OUTPUT
          fi

      - name: Remove previous release
        if: ${{ steps.existing_release.outputs.is_new == 'true' }}
        run: |
          echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token
          gh release delete ${{ steps.release_info.outputs.version }} -y || true

      - name: Create release
        id: create_release
        if: ${{ steps.existing_release.outputs.is_new == 'true' }}
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.release_info.outputs.version }}
          release_name: ${{ steps.release_info.outputs.version }}
          body_path: ./draft-changes.md
          draft: true
          prerelease: ${{ steps.release_info.outputs.is_prerelease }}