name: CI
on:
push:
branches: [main]
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: test (${{ matrix.features }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
features:
- ""
- lua54,vendored
- lua54,vendored,send
- lua54,vendored,async
- lua54,vendored,macros
- lua54,vendored,macros,userdata-wrappers
- lua54,vendored,send,async
- lua54,vendored,send,macros
- lua54,vendored,async,macros
- lua54,vendored,send,async,macros
- lua54,vendored,send,async,macros
- luau,vendored
- luau,vendored,macros,userdata-wrappers
- luau,vendored,send,async,macros
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- name: Install luau-lsp
if: contains(matrix.features, 'luau')
run: |
curl -fsSL -o luau-lsp.zip https://github.com/JohnnyMorganz/luau-lsp/releases/latest/download/luau-lsp-linux-x86_64.zip
unzip luau-lsp.zip -d luau-lsp
chmod +x luau-lsp/luau-lsp
echo "$PWD/luau-lsp" >> "$GITHUB_PATH"
- name: Install lua-language-server
if: matrix.features != ''
run: |
VERSION=$(curl -sI https://github.com/LuaLS/lua-language-server/releases/latest \
| grep -i location | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
mkdir /tmp/lua-ls
curl -fsSL "https://github.com/LuaLS/lua-language-server/releases/download/${VERSION}/lua-language-server-${VERSION}-linux-x64.tar.gz" \
| tar -xz -C /tmp/lua-ls
echo "/tmp/lua-ls/bin" >> "$GITHUB_PATH"
- name: Check
run: cargo check ${{ matrix.features && format('--features {0}', matrix.features) }}
- name: Test
run: cargo test --lib --tests ${{ matrix.features && format('--features {0}', matrix.features) }}
docs:
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- name: Extract docs.rs features
id: docsrs
run: |
features=$(cargo metadata --format-version 1 --no-deps \
| jq -r '.packages[]
| select(.name == "mlua-extras")
| .metadata.docs.rs.features
| join(",")')
echo "features=$features" >> "$GITHUB_OUTPUT"
- name: Build docs
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --no-deps --features "${{ steps.docsrs.outputs.features }}"
- name: Doc tests
run: cargo test --doc --features "${{ steps.docsrs.outputs.features }}"