winget-types 0.4.3

WinGet Types
Documentation
name: CI

on: [ push, pull_request ]

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: Rust ${{ matrix.channel }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        channel: [ stable, beta, nightly ]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust ${{ matrix.channel }}
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.channel }}

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/main' }}
          cache-bin: false

      - name: Install cargo-hack
        uses: taiki-e/install-action@cargo-hack

      - name: Check powerset
        run: cargo hack check --feature-powerset --optional-deps

      - name: Run tests
        run: cargo test --all-features

  publish_dry_run:
    name: Publish dry run
    runs-on: ubuntu-latest
    container: rust:alpine

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Publish dry run
        run: cargo publish --dry-run --no-verify

  msrv:
    name: MSRV
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/main' }}
          cache-bin: false

      - name: Install cargo-msrv
        uses: taiki-e/install-action@v2
        with:
          tool: cargo-msrv

      - name: Verify MSRV
        id: verify
        run: cargo msrv verify

      - name: Find actual MSRV
        if: ${{ failure() && steps.verify.conclusion == 'failure' }}
        run: cargo msrv find

  unused_dependencies:
    name: Unused dependencies
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Check for unused dependencies
        uses: bnjbvr/cargo-machete@main

  minimal_versions:
    name: Minimal dependency versions
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2
        with:
          save-if: ${{ github.ref == 'refs/heads/main' }}
          cache-bin: false

      - uses: taiki-e/install-action@v2
        with:
          tool: cargo-hack,cargo-minimal-versions

      - name: Add nightly Rust toolchain
        run: rustup toolchain add nightly --profile minimal --no-self-update

      - name: Check minimal versions
        run: cargo minimal-versions check

  miri:
    name: Miri
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v6

      - name: Install Miri
        uses: dtolnay/rust-toolchain@nightly
        with:
          components: miri

      - name: Setup Miri
        run: cargo miri setup

      - name: Test with Miri
        run: cargo miri test