-
Notifications
You must be signed in to change notification settings - Fork 27
135 lines (115 loc) · 3.97 KB
/
ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
on:
workflow_dispatch:
pull_request:
push:
jobs:
deno:
name: Deno format and lint
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: denoland/setup-deno@v1
with:
deno-version: "~1.39"
- run: deno lint
- run: deno fmt --check
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
fail-fast: true
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
- run: git tag pre-updates
- run: npm install --locked
- name: Create generated files
shell: bash
run: |
npm run gen
failed=false
git diff pre-updates --exit-code || failed=true
if ! [ "$failed" = "false" ]; then
echo '::warning::Generated files are out of date!'
echo '::warning::run `npm run gen` and commit the changes'
fi
- run: npm test
- name: Check C files with args
shell: bash
run: >
find src/ -name '*.c' ! -name "parser.c" |
xargs -IFNAME sh -c
'echo "\nCHECKING FILE FNAME" &&
clang FNAME -c -Wall -Werror --pedantic
-Wno-format-pedantic
-o/dev/null'
static-validation:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- name: Verify Just can parse test files
shell: bash
run: |
# skip readme.just because it is broken but works for testing
find . -type f -iregex '.*[\./]just[^\./]*' |
grep -v readme.just | while read -r fname
do
echo checking "$fname"
just --list --unstable --justfile "$fname"
done
- name: Look for tests that contain errors
run: "! grep -nr -C4 -E '(ERROR|MISSING|UNEXPECTED)' test"
nvim:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- shell: bash
run: |
set -eauxo pipefail
# Download nvim
curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz
tar -xzvf nvim-linux64.tar.gz
rm nvim-linux64.tar.gz
mkdir -p ~/.config/nvim/
export NVIM=$(realpath nvim-linux64/bin/nvim)
echo workspace: ${{ github.workspace }}
cat << 'EOF' > ~/.config/nvim/init.vim
" Install vim-llug
let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
if empty(glob(data_dir . '/autoload/plug.vim'))
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin()
" Install treesitter
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
" Install our local workspace
require("nvim-treesitter.parsers").get_parser_configs().just = {
install_info = {
url = "${{ github.workspace }}/tree-sitter-just", -- local path or git repo
files = { "src/parser.c", "src/scanner.c" },
branch = "main",
-- use_makefile = true -- this may be necessary on MacOS (try if you see compiler errors)
},
maintainers = { "@IndianBoy42" },
}
call plug#end()
lua <<ENDLUA
require'nvim-treesitter.configs'.setup {
ensure_installed = {"just"},
highlight = {enable = true},
indent = {enable = true},
}
require"tree-sitter-just".setup {}
ENDLUA
EOF
cat ~/.config/nvim/init.vim
"$NVIM" test/highlight/injection.just