monarch-rs 0.1.0

Advanced Git Management Suite for handling multiple repositories concurrently
Documentation
name: Release

on:
  push:
    tags:
      - "v*"

env:
  CARGO_TERM_COLOR: always

jobs:
  create-release:
    name: Create Release
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
    steps:
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: SMV ${{ github.ref_name }}
          body: |
            Please see [CHANGELOG.md](https://github.com/jwliles/smv/blob/main/CHANGELOG.md) for details.
          draft: false
          prerelease: false

  build-release:
    name: Build Release Binaries
    needs: create-release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          target: x86_64-unknown-linux-gnu
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release --target x86_64-unknown-linux-gnu
      
      - name: Prepare binary
        run: |
          cp target/x86_64-unknown-linux-gnu/release/smv smv-linux-amd64
          strip smv-linux-amd64
          tar -czf smv-linux-amd64.tar.gz smv-linux-amd64

      - name: Upload Release Asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create-release.outputs.upload_url }}
          asset_path: smv-linux-amd64.tar.gz
          asset_name: smv-linux-amd64.tar.gz
          asset_content_type: application/gzip

  publish-crate:
    name: Publish to crates.io
    needs: build-release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Publish
        uses: actions-rs/cargo@v1
        with:
          command: publish
          args: --token ${{ secrets.CRATES_IO_TOKEN }}