name: Release

on:
  push:
    tags:
      - "v*"

env:
  CARGO_TERM_COLOR: always

jobs:
  release:
    runs-on: "ubuntu-latest"

    steps:
      - uses: actions/checkout@v3
      - name: Check versions
        run: |
          CARGO_VER=$(cargo pkgid | sed "s/^.*#/v/")
          TAG_VER=${{ github.ref_name }}
          if [[ "$CARGO_VER" != "$TAG_VER" ]]; then exit 1; fi
      - name: Build
        run: cargo build --release --verbose
      - name: Run tests
        run: cargo test --release --verbose
      - name: Adjust compiler output
        run: mv ../ci-out/_tree-owners ../ci-out/tree-owners.zsh
      - name: Publish to crates.io
        run: cargo publish
        env:
          CARGO_REGISTRY_TOKEN: "${{ secrets.CRATES_IO_TOKEN }}"
      - name: Publish to GitHub
        uses: "marvinpinto/action-automatic-releases@latest"
        with:
          repo_token: "${{ secrets.GITHUB_TOKEN }}"
          prerelease: false
          files: |
            LICENSE
            target/release/tree-owners
            ../ci-out/tree-owners.bash
            ../ci-out/tree-owners.fish
            ../ci-out/tree-owners.zsh