misykat 4.1.2

Islamic library for Rust
Documentation
name: CI

on: [push, pull_request]

jobs:
  code_quality:
    name: Code Quality
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout source code
        uses: actions/checkout@v4

      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          components: clippy, rustfmt

      - uses: taiki-e/install-action@just
      - uses: taiki-e/install-action@dprint
      - uses: taiki-e/install-action@v2
        with:
          tool: typos-cli

      - name: Show version information
        shell: bash
        run: |
          just -V
          dprint --version

      - name: Ensure `fmt` has been run
        run:  just fmt-check

      - name: Run clippy
        run: just lint

  msrv:
    name: Minimum Supported Rust Version
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout source code
        uses: actions/checkout@v4

      - uses: actions-rust-lang/setup-rust-toolchain@v1

      - uses: taiki-e/install-action@just
      - uses: taiki-e/install-action@nextest

      - name: Change Timezone
        run: |
          sudo timedatectl set-timezone Asia/Jakarta
          timedatectl status

      - name: Run tests
        run: just test

  build:
    name: Build for ${{ matrix.build }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - { build: linux-gnu,  os: ubuntu-22.04, target: x86_64-unknown-linux-gnu    }
          - { build: linux-musl, os: ubuntu-22.04, target: x86_64-unknown-linux-musl   }
          - { build: win-gnu,    os: windows-2025, target: x86_64-pc-windows-gnu       }
          - { build: win-msvc,   os: windows-2025, target: x86_64-pc-windows-msvc      }
          - { build: win32-msvc, os: windows-2025, target: i686-pc-windows-msvc        }
          - { build: macos,      os: macos-15    , target: x86_64-apple-darwin         }

    steps:
      - name: Checkout source code
        uses: actions/checkout@v4

      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          target: ${{ matrix.target }}

      - name: Show version information
        shell: bash
        run: |
          rustc --version
          cargo --version

      - name: Install musl-tools
        if: matrix.target == 'x86_64-unknown-linux-musl'
        run: |
          sudo apt-get update
          sudo apt-get install -y --no-install-recommends \
            --allow-unauthenticated musl-tools

      - name: Build
        run: cargo build --release --target ${{ matrix.target }}