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 +" Author: Jose Junior " 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 +