diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2fb071ca..de6ff5ef 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1 @@ -# Codeowners should be used to distinguish the maintainers of the project -# and not contributors of specific modules to nvf. While adding a new module -# please consider adding yourself to 'meta.maintainers' in the module instead -# of CODEOWNERS here. -* @NotAShelf @horriblename @Soliprem +* @NotAShelf diff --git a/.github/README.md b/.github/README.md index a6ef7a44..7c0974c3 100644 --- a/.github/README.md +++ b/.github/README.md @@ -246,15 +246,14 @@ Neovim's behaviour with Nix. ### Co-Maintainers -Alongside [myself](https://github.com/notashelf), nvf is developed by those -talented folk. nvf would not be what it is today without their invaluable -contributions. +Alongside myself, nvf is developed by those talented folk: - [**@horriblename**](https://github.com/horriblename) ([Liberapay](https://liberapay.com/horriblename/))- For actively implementing planned features and quality of life updates. -- [**@Soliprem**](https://github.com/soliprem) - For rigorously implementing - missing features and excellent work on new language modules. +- [**@Diniamo**](https://github.com/Diniamo) + ([Liberapay](https://en.liberapay.com/diniamo/)) - For actively submitting + pull requests, issues and assistance with maintenance of nvf. Please do remember to extend your thanks (financially or otherwise) if this project has been helpful to you. @@ -271,14 +270,14 @@ heart-felt thanks to - [**@FlafyDev**](https://github.com/FlafyDev) - For getting Home-Manager module to work and Nix assistance. - [**@n3oney**](https://github.com/n3oney) - For making custom keybinds finally - possible, great ideas and module additions. + possible, and other module additions. - [**@Yavko**](https://github.com/Yavko) - For the amazing **nvf** logo - [**@FrothyMarrow**](https://github.com/FrothyMarrow) - For seeing mistakes - that I could not and contributing good ideas & code. + that I could not. - [**@Gerg-l**](https://github.com/gerg-l) 🐸 - For the modern Neovim wrapper, - [mnw], and occasional improvements to the codebase. -- [**@Diniamo**](https://github.com/Diniamo) - For actively submitting pull - requests, issues and assistance with co-maintenance of nvf. + [mnw], and occasional code improvements. +- [**@Soliprem**](https://github.com/soliprem) - Rigorously implementing missing + features and excellent work on new language modules. and everyone who has submitted issues or pull requests! @@ -302,6 +301,7 @@ including: I am grateful for their previous work and inspiration, and I wholeheartedly recommend checking their work out. +
## License diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml new file mode 100644 index 00000000..4d133ecd --- /dev/null +++ b/.github/workflows/check-docs.yml @@ -0,0 +1,56 @@ +name: "Validate flake & check documentation" +on: + pull_request: + workflow_dispatch: + push: + branches: + - main + paths: + - docs/** +jobs: + flake-docs-check: + name: Validate Flake Documentation + runs-on: ubuntu-latest + 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 + steps: + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + + - name: Checkout + uses: actions/checkout@v4 + + - name: Build documentation packages + run: nix build .#docs-linkcheck -Lv diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c6967f21..7a7677eb 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,6 +1,4 @@ -name: "Treewide Checks" -permissions: read-all - +name: "Validate flake & check formatting" on: pull_request: workflow_dispatch: @@ -8,13 +6,13 @@ on: branches: - main paths-ignore: + - .github/** - assets/** - + - .gitignore jobs: nix-flake-check: - name: "Validate flake" + name: Validate Flake runs-on: ubuntu-latest - if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout uses: actions/checkout@v4 @@ -26,9 +24,8 @@ jobs: run: nix flake check format-with-alejandra: - name: "Check formatting" + name: Formatting via Alejandra runs-on: ubuntu-latest - if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout uses: actions/checkout@v4 @@ -36,116 +33,4 @@ jobs: - 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 + - run: nix run nixpkgs#alejandra -- -c . diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml index aa8fb272..fbc12bc1 100644 --- a/.github/workflows/cleanup.yml +++ b/.github/workflows/cleanup.yml @@ -1,13 +1,9 @@ -name: Delete Stale Branches -permissions: - contents: write - +name: Cleanup on: workflow_dispatch: schedule: - cron: "0 4 1 * *" # 4AM on 1st of every month - cron: "0 4 15 * *" # 4AM on the 15th of every month - jobs: branches: name: Cleanup old branches diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml index 9adaf5ef..f8f45d05 100644 --- a/.github/workflows/docs-preview.yml +++ b/.github/workflows/docs-preview.yml @@ -9,7 +9,7 @@ on: - "modules/**" - "docs/**" -# Defining permissions here passes it to all jobs. +# Defining permissions here passes it to all workflows. # https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token permissions: contents: write @@ -34,7 +34,7 @@ jobs: run: git config --global init.defaultBranch main - name: Build documentation packages - run: nix build .#docs-html --print-build-logs || exit 1 + run: nix build .#docs-html --print-build-logs - name: Deploy to GitHub Pages preview run: | diff --git a/.github/workflows/editorconfig.yml b/.github/workflows/editorconfig.yml new file mode 100644 index 00000000..3d8ca360 --- /dev/null +++ b/.github/workflows/editorconfig.yml @@ -0,0 +1,46 @@ +name: "Check validity of .editorconfig" + +permissions: read-all + +on: + pull_request: + +jobs: + check-editorconfig: + 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/notashelf/nvf/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: $?" + + - name: Fail Gracefully + 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. See https://editorconfig.org/#download for more." + exit 1 diff --git a/.github/workflows/typos.yml b/.github/workflows/typos.yml new file mode 100644 index 00000000..d74ee5b7 --- /dev/null +++ b/.github/workflows/typos.yml @@ -0,0 +1,30 @@ +name: "Check for typos in the source tree" + +permissions: read-all + +on: + pull_request: + workflow_dispatch: + push: + +jobs: + check-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 + + - name: Fail Gracefully + 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 used if this is a one-time issue" + exit 1 diff --git a/docs/manual/options.md b/docs/manual/options.md index beab4f16..61282dfa 100644 --- a/docs/manual/options.md +++ b/docs/manual/options.md @@ -5,8 +5,8 @@ options will include useful comments, warnings or setup tips on how a module option is meant to be used as well as examples in complex cases. An offline version of this page is bundled with nvf as a part of the manpages -which you can access with `man 5 nvf`. Please let us know if you believe any of -the options below are missing useful examples. +which you can access with `man 5 nvf`. Please us know if you believe any of the +options below are missing useful examples.