name: Release
on:
  push:
    tags:
      - "v*"

jobs:
  cargo_publish:
    name: Publish to Crates.io
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2.4.0

      - name: Setup Rust Toolchain
        uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          override: true
          profile: minimal

      - name: Setup Cargo Plugins
        uses: actions-rs/cargo@v1.0.3
        with:
          command: install
          args: cargo-workspaces

      - name: Publish to Crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: |
          cargo workspaces publish --from-git -y

  github_release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    needs: ["cargo_publish"]
    steps:
      - name: Checkout
        uses: actions/checkout@v2.4.0
        with:
          fetch-depth: 0

      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: "1.16"

      - name: Release Notes
        run: |
          go install github.com/git-chglog/git-chglog/cmd/git-chglog@v0.15.0
          git-chglog -c .github/chglog/release.yml $(git describe --tags) > RELEASE.md

      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          body_path: RELEASE.md
          draft: true
