cli-engine 0.3.3

Rust CLI framework for consistent command modules
Documentation
name: Release

on:
  push:
    branches: [main]
  workflow_dispatch:
    inputs:
      publish_only:
        description: "Skip release-please, run publish directly (for retrying failed publishes)"
        type: boolean
        default: false

permissions:
  contents: write
  pull-requests: write

env:
  CARGO_TERM_COLOR: always

jobs:
  release-please:
    name: Release Please
    runs-on: ubuntu-latest
    outputs:
      releases_created: ${{ steps.release.outputs.releases_created }}
    steps:
      - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 #v5.0.0
        id: release
        with:
          config-file: release-please-config.json
          manifest-file: .release-please-manifest.json

  publish:
    name: Publish to crates.io
    runs-on: ubuntu-latest
    needs: release-please
    if: |
      needs.release-please.outputs.releases_created == 'true' ||
      inputs.publish_only == true
    environment: crates-io
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
      - uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 #v1.16.1

      - name: Publish cli-engine
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
        run: cargo publish