willbe 0.35.0

Utility to publish multi-crate and multi-workspace environments and maintain their consistency.
Documentation

name : rust_push

on :

  workflow_call :
    inputs :
      manifest_path :
        required : true
        type : string
      module_name :
        required : true
        type : string
      commit_message :
        required : true
        type : string
      with_smoke :
        required : false
        type : string
        default : true
      commiter_username:
        type: string
        default: true
        required: false

concurrency :

  group : standard_rust_push_${{ inputs.module_name }}_${{ github.ref }}_
    ${{ contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' ) }}
  cancel-in-progress : ${{ contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' }}

env :

  RUST_BACKTRACE : 1
  CARGO_TERM_COLOR : always
  WITH_SMOKE : ${{ inputs.with_smoke }}

jobs :

  checkmate:
    if : contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' )
    runs-on: ubuntu-latest
    steps:
      - name: Install latest nightly toolchain
        uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy
      - uses: actions/checkout@v4

      - name: Install cargo-audit
        run: cargo install cargo-audit
      - name: Install cargo-udeps
        run: cargo install cargo-udeps --locked

      - name: Set MANIFEST_ROOT_PATH
        id: rootpath
        run: echo "path=$(dirname ${{ inputs.manifest_path }})" >> $GITHUB_OUTPUT
      - name: Build module
        run: cd ${{ steps.rootpath.outputs.path }} && cargo build && cd -
      - name: Audit the modules
        id: audit
        run: make audit
        continue-on-error: true
      - name: Generate documentation for the modules
        id: documentation
        run: make doc open=no manifest_path=${{ inputs.manifest_path }}
        continue-on-error: true
      - name: Lint the modules
        id: lint
        run: make lint manifest_path=${{ inputs.manifest_path }} warnings=no
        continue-on-error: true
      - name: Check the modules
        id: check
        run: make check manifest_path=${{ inputs.manifest_path }}
        continue-on-error: true
      - name: Check the modules dependencies
        id: udeps
        run: cargo +nightly udeps --all-targets --manifest-path ${{ inputs.manifest_path }}
        continue-on-error: true
         # Added IDs for each step in the test job: This allows referencing the result of each step later.
        #
        # "Check for errors" step: Now checks the outcome status for each step.
        # If any of them have a value of 'failure', this step will fail the job by returning exit 1.
      - name: Check for errors
        if: steps.audit.outcome != 'success' || steps.documentation.outcome != 'success' || steps.lint.outcome != 'success' || steps.check.outcome != 'success' || steps.udeps.outcome != 'success'
        run: exit 1

#  release:
#    if: contains( inputs.commit_message, '+test' ) || contains( inputs.commit_message, 'merge' )
#    strategy:
#      fail-fast: false
#      matrix:
#        os: [ ubuntu-latest, windows-latest, macos-latest ]
#    runs-on: ${{ matrix.os }}
#    steps:
#      - name: Install latest stable toolchain
#        uses: Wandalen/wretry.action@master
#        with:
#          action: actions-rs/toolchain@v1
#          with: |
#            toolchain : stable
#            override : true
#          attempt_limit: 3
#          attempt_delay: 10000
#      - uses: actions/checkout@v4
#        with:
#          ref: alpha
#
#      - name: Make release build
#        run: cargo build --manifest-path ${{ inputs.manifest_path }} --release

  #  miri:
  #    if: contains( inputs.commit_message, '+test' ) || contains( inputs.commit_message, 'merge' )
  #    runs-on: ubuntu-latest
  #    steps:
  #      - name: Install latest nightly toolchain
  #        uses: Wandalen/wretry.action@master
  #        with:
  #          action: actions-rs/toolchain@v1
  #          with: |
  #            toolchain : nightly
  #            override : true
  #            components : miri
  #          attempt_limit: 3
  #          attempt_delay: 10000
  #      - uses: actions/checkout@v4
  #        with:
  #          ref: alpha

  #      - name: Test with miri
  #        run: cargo miri test --manifest-path ${{ inputs.manifest_path }}

  will_test :
#    This section ensures that `job` `will_test` will only be executed after `checkmate` and if `checkmate` fails, no tests will be run.
    needs :
      - checkmate
    if : contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' )
    concurrency :
      group : standard_rust_push_${{ inputs.module_name }}_${{ github.ref }}_${{ matrix.os }}
      cancel-in-progress : true
    strategy :
      fail-fast : false
      matrix :
        os : [ ubuntu-latest, windows-latest, macos-latest ]
    runs-on : ${{ matrix.os }}
    steps :
      - name : Install latest stable toolchain
        uses : dtolnay/rust-toolchain@stable
      - name : Install latest nightly toolchain
        uses : dtolnay/rust-toolchain@nightly
      - uses: actions/checkout@v4
      - name: Install will
        run: cargo +stable install willbe
      - name: Set MANIFEST_ROOT_PATH
        id: rootpath
        run: echo "path=$(dirname ${{ inputs.manifest_path }})" >> $GITHUB_OUTPUT
      - name: Run tests with each feature
        run: will .test ${{ steps.rootpath.outputs.path }}/ dry:0 exclude:'' with_all_features:1 with_debug:1 with_nightly:1 with_none_features:1 with_release:1 with_stable:1