win-desktop-utils 0.5.0

Windows desktop helpers for shell, shortcuts, app data, elevation, and single-instance Rust apps
Documentation
name: CI

on:
  push:
  pull_request:

jobs:
  msrv:
    runs-on: windows-latest

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

      - name: Install Rust MSRV
        uses: dtolnay/rust-toolchain@1.82.0

      - name: Cache cargo
        uses: Swatinem/rust-cache@v2

      - name: Check MSRV
        run: cargo check --all-targets

  windows:
    runs-on: windows-latest

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

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy

      - name: Cache cargo
        uses: Swatinem/rust-cache@v2

      - name: Check formatting
        run: cargo fmt --all -- --check

      - name: Run tests
        run: cargo test

      - name: Run clippy
        run: cargo clippy --all-targets --all-features -- -D warnings

      - name: Check examples
        run: cargo check --examples

      - name: Test documentation examples
        run: cargo test --doc --all-features

      - name: Check feature sets
        run: |
          cargo check --no-default-features
          cargo check --no-default-features --features app
          cargo check --no-default-features --features elevation
          cargo check --no-default-features --features instance
          cargo check --no-default-features --features paths
          cargo check --no-default-features --features recycle-bin
          cargo check --no-default-features --features shell
          cargo check --no-default-features --features shortcuts

      - name: Build docs
        run: cargo doc --no-deps

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

      - name: Check documentation links
        run: lychee --offline --no-progress README.md CHANGELOG.md CONTRIBUTING.md SECURITY.md RELEASE.md ROADMAP.md CODE_OF_CONDUCT.md docs/cookbook.md docs/which-api.md docs/side-effects.md docs/compatibility.md

      - name: Verify package
        run: cargo package

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

      - name: Check dependency policy
        run: cargo deny check

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

      - name: Check public API semver
        run: cargo semver-checks check-release

  non-windows:
    runs-on: ubuntu-latest

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

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

      - name: Cache cargo
        uses: Swatinem/rust-cache@v2

      - name: Check non-Windows stubs
        run: cargo check --all-targets --all-features

      - name: Test non-Windows stubs
        run: cargo test --lib --all-features

      - name: Lint non-Windows stubs
        run: cargo clippy --all-targets --all-features -- -D warnings

      - name: Check empty feature set on non-Windows
        run: cargo check --no-default-features