rmcl 0.4.0

A fully featured Minecraft TUI launcher
name: checks

on:
  workflow_call:
    inputs:
      network-tests:
        type: boolean
        default: false
      ref:
        type: string
        default: ""
    secrets:
      curseforge-api-key:
        required: false

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.ref || github.sha }}
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --all -- --check

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.ref || github.sha }}
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: "21"
      - uses: Swatinem/rust-cache@v2
      - run: cargo clippy --all-targets --locked -- -D warnings

  build-and-test:
    name: build and test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]

    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.ref || github.sha }}
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: "21"
      - uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}
      - run: cargo build --locked
      - run: cargo test --locked --all-targets

  network-tests:
    if: inputs.network-tests
    runs-on: ubuntu-latest
    env:
      CURSEFORGE_API_KEY: ${{ secrets.curseforge-api-key }}
    steps:
      - uses: actions/checkout@v6
        with:
          ref: ${{ inputs.ref || github.sha }}
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: "21"
      - uses: Swatinem/rust-cache@v2
      - run: cargo test --locked --all-targets -- --ignored