name: "publish-release"

on:
  workflow_dispatch:

jobs:
  npm-publish:
    name: "Publish release"
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Setup rust toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: Install jq
        run: sudo apt-get update && sudo apt-get --yes --force-yes install jq

      - name: Install cargo-workspaces
        run: cargo install cargo-workspaces

      - name: Login to crates.io
        run: cargo login ${{ secrets.CRATES_IO_TOKEN }}

      - name: Save marine-rs-sdk's crate version to env
        run: |
          set -x
          PKG_NAME=marine-rs-sdk
          VERSION=$(cargo ws list -l | grep "$PKG_NAME\s" | head -n1 | awk '{ print $2 }')
          echo "VERSION=$VERSION" | tee -a $GITHUB_ENV
          echo "PKG_NAME=$PKG_NAME" | tee -a $GITHUB_ENV

      - name: Publish to crates.io
        run: cargo ws publish --no-git-commit --from-git --skip-published --yes

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ env.VERSION }}
          release_name: Marine Rust SDK ${{ env.VERSION }}
          body: |
            - [${{ env.VERSION }} @ crates.io](https://crates.io/crates/${{ env.PKG_NAME }}/${{ env.VERSION }})
          draft: false
          prerelease: false