const-semver 0.1.4

Library for constructing semver-compatible Versions at compile-time
Documentation
on: 
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

name: Test & Tag

jobs:
  lint:
    name: Linting (rustfmt + clippy)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Install rustup components (rustfmt, clippy)
        run: rustup component add rustfmt clippy

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
      
      - name: Run clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout master branch
        uses: actions/checkout@master

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      
      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --workspace --all-features
  
  tag:
    name: Tag & Publish
    needs: [lint, test]
    if: github.event_name == 'push' && github.ref == 'refs/heads/master'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Fetch the version from Cargo.toml
        id: retrieve_tag
        run: echo ::set-output name=crate-tag::$(cat Cargo.toml | grep version | head -n1 | awk '{ print $3 }' | tr -d '"')
        shell: bash

      - name: Push the crate version as a tag
        id: tag_version
        uses: mathieudutour/github-tag-action@v5.4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          tag_prefix: ""
          custom_tag: ${{ steps.retrieve_tag.outputs.crate-tag }}

      - name: Publish crate to crates.io
        uses: katyo/publish-crates@v1
        with:
          registry-token: ${{ secrets.CARGO_LOGIN_TOKEN }}