summaryrefslogtreecommitdiff
path: root/ale_linters/cairo/scarb.vim
diff options
context:
space:
mode:
Diffstat (limited to 'ale_linters/cairo/scarb.vim')
-rw-r--r--ale_linters/cairo/scarb.vim31
1 files changed, 31 insertions, 0 deletions
diff --git a/ale_linters/cairo/scarb.vim b/ale_linters/cairo/scarb.vim
new file mode 100644
index 00000000..48212f0b
--- /dev/null
+++ b/ale_linters/cairo/scarb.vim
@@ -0,0 +1,31 @@
+" Author: 0xhyoga <0xhyoga@gmx.com>,
+" Description: scarb for cairo files
+
+function! ale_linters#cairo#scarb#GetScarbExecutable(bufnr) abort
+ if ale#path#FindNearestFile(a:bufnr, 'Scarb.toml') isnot# ''
+ return 'scarb'
+ else
+ " if there is no Scarb.toml file, we don't use scarb even if it exists,
+ " so we return '', because executable('') apparently always fails
+ return ''
+ endif
+endfunction
+
+function! ale_linters#cairo#scarb#GetCommand(buffer, version) abort
+ return 'scarb build'
+endfunction
+
+call ale#linter#Define('cairo', {
+\ 'name': 'scarb',
+\ 'executable': function('ale_linters#cairo#scarb#GetScarbExecutable'),
+\ 'command': {buffer -> ale#semver#RunWithVersionCheck(
+\ buffer,
+\ ale_linters#cairo#scarb#GetScarbExecutable(buffer),
+\ '%e --version',
+\ function('ale_linters#cairo#scarb#GetCommand'),
+\ )},
+\ 'callback': 'ale#handlers#cairo#HandleCairoErrors',
+\ 'output_stream': 'both',
+\ 'lint_file': 1,
+\})
+