proton-cli 0.0.0

A template command line application written in Rust leveraging the clap framework
name: release

concurrency:
  cancel-in-progress: false
  group: ${{ github.workflow }}-${{ github.ref }}

env:
  CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
  CARGO_TERM_COLOR: always
  CARGO_PKG_VERSION: ${{ github.event.release.tag_name }}

on:
  push:
    branches: [ main, master ]
    tags: [ v*, "*-nightly" ]
  release:
    types: [ published ]
  repository_dispatch:
    types: [ crates-io ]
  workflow_dispatch:
    inputs:
      version:
        description: 'Version to release'
        required: true
        default: '0.1.0'

permissions: write-all

jobs:
  publish:
    name: Publish
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - 
        name: setup rust-toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          cache-workspaces: true
      - 
        name: publish to crates.io
        run: cargo publish --all-features -v -p ${{ github.event.repository.name }}
        
  release:
    env:
      CARGO_PKG_VERSION: ${{ github.event.release.tag_name }}
    if: startsWith(github.event.ref, 'refs/tags/v') || startsWith(github.event.ref, 'refs/releases/v')
    name: Release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - 
        name: setup rust-toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          cache-key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          cache-workspaces: true
      -
        name: upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: proton ${{ github.event.release.tag_name }}
          path: target/release/proton