summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/chef/foodcritic.vim15
-rw-r--r--doc/ale-chef.txt25
-rw-r--r--doc/ale.txt2
-rw-r--r--test/test_foodcritic_command_callback.vader26
4 files changed, 67 insertions, 1 deletions
diff --git a/ale_linters/chef/foodcritic.vim b/ale_linters/chef/foodcritic.vim
index 0a6807b2..a3a9af2e 100644
--- a/ale_linters/chef/foodcritic.vim
+++ b/ale_linters/chef/foodcritic.vim
@@ -1,6 +1,11 @@
" Author: Edward Larkey <edwlarkey@mac.com>
+" Author: Jose Junior <jose.junior@gmail.com>
" Description: This file adds the foodcritic linter for Chef files.
+" Support options!
+let g:ale_chef_foodcritic_options = get(g:, 'ale_chef_foodcritic_options', '')
+let g:ale_chef_foodcritic_executable = get(g:, 'ale_chef_foodcritic_executable', 'foodcritic')
+
function! ale_linters#chef#foodcritic#Handle(buffer, lines) abort
" Matches patterns line the following:
"
@@ -29,10 +34,18 @@ function! ale_linters#chef#foodcritic#Handle(buffer, lines) abort
return l:output
endfunction
+function! ale_linters#chef#foodcritic#GetCommand(buffer) abort
+ return printf('%s %s %%t',
+ \ g:ale_chef_foodcritic_executable,
+ \ escape(g:ale_chef_foodcritic_options, '~')
+ \)
+endfunction
+
+
call ale#linter#Define('chef', {
\ 'name': 'foodcritic',
\ 'executable': 'foodcritic',
-\ 'command': 'foodcritic %t',
+\ 'command_callback': 'ale_linters#chef#foodcritic#GetCommand',
\ 'callback': 'ale_linters#chef#foodcritic#Handle',
\})
diff --git a/doc/ale-chef.txt b/doc/ale-chef.txt
new file mode 100644
index 00000000..de5a4926
--- /dev/null
+++ b/doc/ale-chef.txt
@@ -0,0 +1,25 @@
+===============================================================================
+ALE Chef Integration *ale-chef-options*
+
+
+-------------------------------------------------------------------------------
+foodcritc *ale-chef-foodcritic*
+
+g:ale_chef_foodcritic_options *g:ale_chef_foodcritic_options*
+
+ Type: |String|
+ Default: `''`
+
+ This variable can be changed to modify flags given to foodcritic.
+
+
+g:ale_chef_foodcritic_executable *g:ale_chef_foodcritic_executable*
+
+ Type: |String|
+ Default: `'foodcritic'`
+
+ This variable can be changed to point to the foodcritic binary in case it's
+ not on the $PATH or a specific version/path must be used.
+
+-------------------------------------------------------------------------------
+ vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
diff --git a/doc/ale.txt b/doc/ale.txt
index 32e4d261..451cb4b3 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -16,6 +16,8 @@ CONTENTS *ale-contents*
clang...............................|ale-c-clang|
cppcheck............................|ale-c-cppcheck|
gcc.................................|ale-c-gcc|
+ chef..................................|ale-chef-options|
+ foodcritic..........................|ale-chef-foodcritic|
cpp...................................|ale-cpp-options|
clang...............................|ale-cpp-clang|
clangtidy...........................|ale-cpp-clangtidy|
diff --git a/test/test_foodcritic_command_callback.vader b/test/test_foodcritic_command_callback.vader
new file mode 100644
index 00000000..32beb926
--- /dev/null
+++ b/test/test_foodcritic_command_callback.vader
@@ -0,0 +1,26 @@
+Before:
+ let g:ale_chef_foodcritic_options = '-t ~F011'
+ let g:ale_chef_foodcritic_executable = 'foodcritic'
+
+ silent! cd /testplugin/test
+ let g:dir = getcwd()
+
+ runtime ale_linters/chef/foodcritic.vim
+
+After:
+ let g:ale_chef_foodcritic_options = ''
+ let g:ale_chef_foodcritic_executable = ''
+
+ silent execute 'cd ' . g:dir
+ unlet! g:dir
+
+ call ale#linter#Reset()
+
+Execute(command line should be assembled correctly):
+
+ AssertEqual
+ \ 'foodcritic -t \~F011 %t',
+ \ ale_linters#chef#foodcritic#GetCommand(bufnr(''))
+
+ :q
+