name: ci
on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:
env:
  CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
  CARGO_INCREMENTAL: 0
  CARGO_TERM_COLOR: always
permissions:
  contents: read
jobs:
  ci:
    name: ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: actions-rs/toolchain@v1
        if: ${{ matrix.os == 'windows-latest' }}
        with:
          components: clippy
          profile: minimal
          toolchain: stable
      - uses: actions-rs/toolchain@v1
        if: ${{ matrix.os == 'windows-latest' }}
        with:
          components: rustfmt
          profile: minimal
          toolchain: nightly
      - uses: cachix/install-nix-action@v25
        if: ${{ matrix.os != 'windows-latest' }}
        with:
          nix_path: nixpkgs=channel:nixos-unstable
      - uses: cachix/cachix-action@v14
        if: ${{ matrix.os != 'windows-latest' && env.CACHIX_AUTH_TOKEN != '' }}
        with:
          authToken: ${{ env.CACHIX_AUTH_TOKEN }}
          name: zoxide
      - name: Setup cache
        uses: Swatinem/rust-cache@v2.7.3
        with:
          key: ${{ matrix.os }}
      - name: Install just
        uses: taiki-e/install-action@v2
        with:
          tool: just
      - name: Run lints + tests
        run: just lint test
