A GitHub action that lets you leverage lua-language-server
and EmmyLua to statically type check and lint lua code.
What I found the most frustrating about developing Neovim plugins in Lua is the lack of type safety.
When I added some EmmyLua
docs to one of my plugins (to generate Vimdoc using lemmy-help
),
I noticed lua-language-server
was giving me diagnostics based on my documentation.
This was something I was not getting from linters like luacheck
.
So I asked myself, "Can I leverage lua-language-server
and EmmyLua to statically type check my Lua code?"
The result is this GitHub action, which type checks itself:
Create .github/workflows/typecheck.yml
in your repository with the following contents:
---
name: Type Check Code Base
on:
pull_request: ~
push:
branches:
- master
jobs:
build:
name: Type Check Code Base
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Type Check Code Base
uses: mrcjkb/[email protected]
The following optional inputs can be specified using with:
The diagnostics severity level to fail on. One of:
Error
Warning
(default)Information
Hint
Example:
- name: Type Check Code Base
uses: mrcjkb/[email protected]
with:
checkLevel: Error
Directories to lint (relative to the repostitory root). Defaults to the repository root if none are specified.
Example:
- name: Type Check Code Base
uses: mrcjkb/[email protected]
with:
directories: |
lua
tests
Path to a .luarc.json
(relative to the repository root).
Example:
- name: Type Check Code Base
uses: mrcjkb/[email protected]
with:
configpath: ".luarc.json"
See the wiki for usage examples.
Yes. Because it is not distributed with any binaries, you can use it in any project.