tiny-update-check 1.1.3

A minimal, lightweight crate update checker for Rust CLI applications
Documentation
name: Test
on:
  push:
    branches: [main]
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  changes:
    name: Detect changes
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    outputs:
      code: ${{ github.event_name == 'push' || steps.filter.outputs.code == 'true' }}
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6.0.2
      - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # ratchet:dorny/paths-filter@v3
        id: filter
        with:
          filters: |
            code:
              - 'src/**'
              - 'tests/**'
              - 'examples/**'
              - 'benches/**'
              - 'Cargo.toml'
              - 'Cargo.lock'

  test:
    name: Test (${{ matrix.os }}, ${{ matrix.rust }})
    needs: [changes]
    if: needs.changes.outputs.code == 'true'
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        rust: [stable, beta]
        include:
          - os: ubuntu-latest
            rust: nightly
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6.0.2
      - uses: tylerbutler/actions/setup-rust@c4c45a8284082163bc58623acfc4b3dc98633c3d # ratchet:tylerbutler/actions/setup-rust@main
        with:
          toolchain: ${{ matrix.rust }}
      - name: Run tests (all features)
        run: cargo test --all-features
      - name: Run tests (rustls feature)
        run: cargo test --no-default-features --features rustls

  # Minimal Supported Rust Version check
  msrv:
    name: MSRV Check
    needs: [changes]
    if: needs.changes.outputs.code == 'true'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # ratchet:actions/checkout@v6.0.2
      - name: Get MSRV from Cargo.toml
        id: msrv
        run: |
          MSRV=$(grep '^rust-version' Cargo.toml | cut -d'"' -f2)
          echo "version=$MSRV" >> "$GITHUB_OUTPUT"
      - uses: tylerbutler/actions/setup-rust@c4c45a8284082163bc58623acfc4b3dc98633c3d # ratchet:tylerbutler/actions/setup-rust@main
        with:
          toolchain: ${{ steps.msrv.outputs.version }}
      - run: cargo check --all-features

  # Gate job for required status check — reports a single fixed-name check
  # that passes when all test matrix jobs pass (or are skipped).
  test-result:
    name: Test Result
    if: always()
    needs: [test, msrv]
    runs-on: ubuntu-latest
    steps:
      - name: Check test matrix result
        run: |
          if [[ "${{ needs.test.result }}" == "failure" || "${{ needs.test.result }}" == "cancelled" ]]; then
            echo "Test matrix failed or was cancelled"
            exit 1
          fi
          if [[ "${{ needs.msrv.result }}" == "failure" || "${{ needs.msrv.result }}" == "cancelled" ]]; then
            echo "MSRV check failed or was cancelled"
            exit 1
          fi