flopen 0.1.2

Reliably open and lock a file
Documentation
name: CI
on:
  push:
    branches-ignore:
      - "gh-readonly-queue/**"
  pull_request:
  merge_group:

jobs:
  check:
    name: cargo check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: "1.88"
      - run: cargo check --all-targets --all-features

  fmt:
    name: cargo fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: "1.88"
          components: rustfmt
      - run: cargo fmt --all --check

  test:
    name: cargo test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: "1.88"
      - run: cargo test --all-targets --all-features

  clippy:
    name: cargo clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: "1.88"
          components: clippy
      - uses: clechasseur/rs-clippy-check@v5.0.1
        with:
          # setup-rust-toolchain already sets `-D warnings`, but we leave this
          # here to make the behavior explicit.
          args: --all-targets --all-features -- -D warnings

  clippy-latest:
    name: cargo clippy latest
    runs-on: ubuntu-latest
    continue-on-error: true
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          components: clippy
          # Defaults to '-D warnings', so clear it out manually.
          rustflags: ''
      - uses: clechasseur/rs-clippy-check@v5.0.1
        with:
          args: --all-targets --all-features

  minimal-dependencies:
    name: minimal direct dependencies
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: nightly
      - run: cargo check -Z direct-minimal-versions

  # Job to key success status against
  allgreen:
    name: allgreen
    if: always()
    needs:
      - check
      - fmt
      - test
      - clippy
      - minimal-dependencies
    runs-on: ubuntu-latest
    steps:
      - name: Decide whether the needed jobs succeeded or failed
        uses: re-actors/alls-green@release/v1
        with:
          jobs: ${{ toJSON(needs) }}