micattix 0.2.0

A Rust library for the Mattix board game, named after mica's perfect cleavage property
Documentation
name: CI

on:
  push:
    branches: [ main, master, develop ]
  pull_request:
    branches: [ main, master ]

env:
  CARGO_TERM_COLOR: always
  # 依存関係キャッシュの最適化
  CARGO_INCREMENTAL: 0
  CARGO_NET_RETRY: 10

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Linux dependencies
        run: sudo apt-get update && sudo apt-get install -y pkg-config libasound2-dev libudev-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "test-cache"
      - name: Run tests
        run: cargo test --all-features

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Linux dependencies
        run: sudo apt-get update && sudo apt-get install -y pkg-config libasound2-dev libudev-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "build-cache"
      - name: Build
        run: cargo build --all-features

  # 異なるフィーチャーの組み合わせでビルドをテスト
  build-features:
    name: Build with different feature combinations
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Linux dependencies
        run: sudo apt-get update && sudo apt-get install -y pkg-config libasound2-dev libudev-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "features-cache"
      - name: Build with console_ui
        run: cargo build --features console_ui
      - name: Build with ggez_ui
        run: cargo build --features ggez_ui
        
  # フォーマットチェック
  fmt:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "fmt-cache"
      - name: Check formatting
        run: cargo fmt --all -- --check
        continue-on-error: true

  # リントチェック
  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Linux dependencies
        run: sudo apt-get update && sudo apt-get install -y pkg-config libasound2-dev libudev-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "clippy-cache"
      - name: Run clippy
        run: cargo clippy --all-features -- -D warnings