mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-04-01 18:51:53 +00:00
151 lines
4.5 KiB
YAML
151 lines
4.5 KiB
YAML
name: "Treewide Checks"
|
|
permissions: read-all
|
|
|
|
on:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- assets/**
|
|
|
|
jobs:
|
|
nix-flake-check:
|
|
name: "Validate flake"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@main
|
|
|
|
- name: Check Flake
|
|
run: nix flake check
|
|
|
|
format-with-alejandra:
|
|
name: "Check formatting"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@main
|
|
|
|
- name: Check formatting via Alejandra
|
|
run: nix run nixpkgs#alejandra -- -c .
|
|
|
|
check-typos:
|
|
name: "Check source tree for typos"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Check for typos
|
|
uses: crate-ci/typos@master
|
|
with:
|
|
config: .github/typos.toml
|
|
|
|
- if: ${{ failure() }}
|
|
shell: bash
|
|
run: |
|
|
echo "::error:: Current codebase contains typos that were caught by the CI!"
|
|
echo "If those typos were intentional, please add them to the ignored regexes in .github/typos.toml"
|
|
echo "[skip ci] label may be added to the PR title if this is a one-time issue and is safe to ignore"
|
|
exit 1
|
|
|
|
flake-docs-check:
|
|
name: "Validate documentation builds"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
strategy:
|
|
matrix:
|
|
package:
|
|
- docs
|
|
- docs-html
|
|
- docs-manpages
|
|
- docs-json
|
|
steps:
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@main
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set default git branch (to reduce log spam)
|
|
run: git config --global init.defaultBranch main
|
|
|
|
- name: Build documentation packages
|
|
run: nix build .#${{ matrix.package }} --print-build-logs
|
|
|
|
- name: Get current date
|
|
id: get-date
|
|
# output format: 2023-12-22-120000
|
|
run: echo "date=$(date +'%Y-%m-%d-%H%M%S')" >> ${GITHUB_OUTPUT}
|
|
|
|
- name: Upload doc artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: "${{ matrix.package }}"
|
|
path: result/share/doc/nvf
|
|
|
|
flake-docs-linkcheck:
|
|
name: "Validate hyperlinks in documentation sources"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
steps:
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@main
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Build linkcheck package
|
|
run: nix build .#docs-linkcheck -Lv
|
|
|
|
check-editorconfig:
|
|
name: "Validate Editorconfig conformance"
|
|
runs-on: ubuntu-latest
|
|
if: "!contains(github.event.pull_request.title, '[skip ci]')"
|
|
steps:
|
|
- name: Get list of changed files from PR
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
gh api \
|
|
repos/${{ github.repository }}/pulls/${{github.event.number}}/files --paginate \
|
|
| jq '.[] | select(.status != "removed") | .filename' \
|
|
> "$HOME/changed_files"
|
|
|
|
- name: Print list of changed files
|
|
run: |
|
|
cat "$HOME/changed_files"
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@main
|
|
|
|
- name: Checking EditorConfig
|
|
shell: bash
|
|
run: |
|
|
cat "$HOME/changed_files" | nix-shell -p editorconfig-checker.out \
|
|
--run 'xargs -r editorconfig-checker -disable-indentation -exclude flake.lock --verbose'
|
|
echo -n "Check status: $?"
|
|
|
|
- if: ${{ failure() }}
|
|
shell: bash
|
|
run: |
|
|
echo "::error:: Current formatting does not fit convention provided by .editorconfig located in the project root."
|
|
echo "Please make sure your editor properly integrates editorconfig, Neovim does so by default."
|
|
echo "See https://editorconfig.org/#download on how to integrate Editorconfig to your editor."
|
|
exit 1
|