suricate 0.1.1

A gedcom viewer
Documentation
on: [push, pull_request, workflow_dispatch]

name: basic CI workflows

env:
    RUSTFLAGS: -D warnings
    RUSTDOCFLAGS: -D warnings

jobs:
    check:
        name: Check
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - uses: actions-rs/cargo@v1
              with:
                  command: check
                  args: --all-features

    check_wasm:
        name: Check wasm32
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  target: wasm32-unknown-unknown
                  override: true
            - uses: actions-rs/cargo@v1
              with:
                  command: check
                  args: --all-features --lib --target wasm32-unknown-unknown

    test:
        name: Test Suite
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
            - run: sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
            - uses: actions-rs/cargo@v1
              with:
                  command: test
                  args: --lib

    fmt:
        name: Rustfmt
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
                  components: rustfmt
            - uses: actions-rs/cargo@v1
              with:
                  command: fmt
                  args: --all -- --check

    clippy:
        name: Clippy
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: stable
                  override: true
                  components: clippy
            - uses: actions-rs/cargo@v1
              with:
                  command: clippy
                  args: -- -D warnings

    trunk:
        name: trunk
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1
              with:
                  profile: minimal
                  toolchain: 1.94
                  target: wasm32-unknown-unknown
                  override: true
            - name: Download and install Trunk binary
              run: wget -qO- https://github.com/thedodd/trunk/releases/latest/download/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf-
            - name: Build
              run: ./trunk build

    build:
        if: contains(join(github.event.commits.*.modified, ' '), 'Cargo.toml') || contains(join(github.event.commits.*.added, ' '), 'Cargo.toml')
        runs-on: ${{ matrix.os }}
        strategy:
            fail-fast: false
            matrix:
                include:
                    - os: macos-latest
                      TARGET: aarch64-apple-darwin

                    - os: macos-latest
                      TARGET: x86_64-apple-darwin

                    - os: ubuntu-latest
                      TARGET: arm-unknown-linux-musleabihf

                    - os: ubuntu-latest
                      TARGET: armv7-unknown-linux-musleabihf

                    - os: ubuntu-latest
                      TARGET: x86_64-unknown-linux-musl

                    - os: windows-latest
                      TARGET: x86_64-pc-windows-msvc
                      EXTENSION: .exe

        steps:
            - name: Building ${{ matrix.TARGET }}
              run: echo "${{ matrix.TARGET }}"

            - uses: actions/checkout@v6
            - uses: actions-rs/toolchain@v1.0.1
              with:
                  toolchain: stable
                  target: ${{ matrix.TARGET }}
                  override: true

            - uses: actions-rs/cargo@v1
              with:
                  use-cross: true
                  command: build
                  args: --verbose --release --target=${{ matrix.TARGET }}

            - name: Rename
              run: cp target/${{ matrix.TARGET }}/release/${{ github.event.repository.name }}${{ matrix.EXTENSION }} ${{ github.event.repository.name }}-${{ matrix.TARGET }}${{ matrix.EXTENSION }}

            - uses: actions/upload-artifact@main
              with:
                  name: ${{ github.event.repository.name }}-${{ matrix.TARGET }}${{ matrix.EXTENSION }}
                  path: ${{ github.event.repository.name }}-${{ matrix.TARGET }}${{ matrix.EXTENSION }}