latchshot 0.2.4

A lightweight yet intelligent window-aware screenshot tool
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read

jobs:
  rust:
    name: Rust
    uses: so1ve/workflows/.github/workflows/rust-ci.yml@v1
    with:
      toolchain: stable
      runs-on-matrix: '"ubuntu-latest"'
      setup: .github/actions/setup-rust-ci

  nix:
    name: Nix
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v7
      - uses: cachix/install-nix-action@v31
      - run: nix fmt -- --ci
      - run: nix flake check --all-systems

  build:
    name: Build ${{ matrix.system }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - system: x86_64-linux
            runner: ubuntu-24.04
          - system: aarch64-linux
            runner: ubuntu-24.04-arm
    runs-on: ${{ matrix.runner }}
    steps:
      - uses: actions/checkout@v7
      - uses: cachix/install-nix-action@v31
      - uses: cachix/cachix-action@v17
        with:
          name: so1ve
          authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
          skipPush: ${{ github.event_name == 'pull_request' }}
      - run: nix build ".#packages.${{ matrix.system }}.default" --print-build-logs

  binary:
    name: Binary ${{ matrix.target }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - target: x86_64-unknown-linux-gnu
            runner: ubuntu-24.04
          - target: aarch64-unknown-linux-gnu
            runner: ubuntu-24.04-arm
    runs-on: ${{ matrix.runner }}
    steps:
      - uses: so1ve/workflows/setup-rust@v1
        with:
          toolchain: stable
      - uses: ./.github/actions/setup-rust-ci
      - run: cargo build --locked --release
      - run: mv target/release/latchshot "latchshot-${{ matrix.target }}"
      - uses: actions/upload-artifact@v7
        with:
          name: latchshot-${{ matrix.target }}
          path: latchshot-${{ matrix.target }}
          if-no-files-found: error