Skip to content

ci: replace nixfmt-rfc-style with nixfmt #30

ci: replace nixfmt-rfc-style with nixfmt

ci: replace nixfmt-rfc-style with nixfmt #30

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
jobs:
nix-lint:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install Nix
uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5
- name: Run nixfmt
run: |
mapfile -t files < <(git ls-files "*.nix")
((${#files[@]} == 0)) || nix run nixpkgs#nixfmt -- --check "${files[@]}"
- name: Run statix
run: nix run nixpkgs#statix -- check .
- name: Run deadnix
run: nix run nixpkgs#deadnix -- --fail .
lint:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Run ruff check
run: uv run ruff check
- name: Run ruff format
run: uv run ruff format --check
typecheck:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Run ty
run: uv run ty check
test:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Run tests
run: uv run pytest --cov
audit:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Run deptry
run: uv run --group audit deptry .
- name: Run vulture
run: uv run --group audit vulture
all-green:
if: always()
needs: [nix-lint, lint, typecheck, test, audit]
runs-on: ubuntu-latest
timeout-minutes: 1
permissions: {}
steps:
- name: Fail if any prerequisite did not succeed
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped')
run: exit 1