Skip to content

A GitHub action that lets you leverage sumneko lua-language-server and EmmyLua to statically type check lua code.

License

Notifications You must be signed in to change notification settings

mrcjkb/lua-typecheck-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b140797 · Feb 9, 2025
Oct 7, 2024
Jun 4, 2023
Feb 5, 2023
Jan 17, 2023
Jan 17, 2023
May 31, 2024
Jan 17, 2023
May 31, 2024
Jan 18, 2023
Jan 17, 2023
Apr 23, 2024
Oct 7, 2024
Feb 9, 2025
Jul 16, 2023
Feb 5, 2023

Repository files navigation

lua-language-server type check action

A GitHub action that lets you leverage lua-language-server and luaCATS to statically type check and lint lua code.

Introduction

What I found the most frustrating about developing Neovim plugins in Lua is the lack of type safety.

When I added some LuaCATS annotations 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:

Type Check Code Base

Usage

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/lua-typecheck-action@v0

Inputs

The following optional inputs can be specified using with:

checklevel

The diagnostics severity level to fail on. One of:

  • Error
  • Warning (default)
  • Information
  • Hint

Example:

- name: Type Check Code Base
  uses: mrcjkb/lua-typecheck-action@v0
  with:
    checklevel: Error

directories

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/lua-typecheck-action@v0
  with:
    directories: |
     lua
     tests

configpath

Path to a .luarc.json (relative to the repository root).

Example:

- name: Type Check Code Base
  uses: mrcjkb/lua-typecheck-action@v0
  with:
    configpath: ".luarc.json"

Wiki

See the wiki for usage examples.

Can I use this with a non-GPLv2 licensed project?

Yes. Because it is not distributed with any binaries, you can use it in any project.