diff options
author | José Júnior <jose.junior@gmail.com> | 2017-04-05 13:21:47 -0400 |
---|---|---|
committer | w0rp <w0rp@users.noreply.github.com> | 2017-04-05 18:21:47 +0100 |
commit | 4caf273d53e7d90e845cb79d0293b1b410f22138 (patch) | |
tree | b6f134287c0ecec4a800441de659110ac7cb6985 | |
parent | c7bd5cc0ba799abb7e382751cdbea49c1b98a429 (diff) | |
download | ale-4caf273d53e7d90e845cb79d0293b1b410f22138.zip |
Adds options to foodcritic linter (#437)
* Adds options to foodcritic linter
Adds a way to pass command line options to the foodcritic command and
documentation about it.
* Creates a simple test for foodcritic command callback
This test simply runs the GetCommand function for the foodcritic linter
and feeds it with some test variables to assert the command line is
being created/escaped correctly.
* Makes foodcritic linter use a command callback
Following review comments, changes the foodcritic linter to use a
`GetCommand` callback for the `command_callback` linter option.
Makes sure that `~` are escaped: flags on foodcritic command line are
negated by adding a `~` in front of the specific cop name:
```
foodcritic -t ~FC011
```
But the way the commands are executed cause foodcritic to fail (since
tilde is recognized as home directory).
* Fixes the doc to include new variables
-rw-r--r-- | ale_linters/chef/foodcritic.vim | 15 | ||||
-rw-r--r-- | doc/ale-chef.txt | 25 | ||||
-rw-r--r-- | doc/ale.txt | 2 | ||||
-rw-r--r-- | test/test_foodcritic_command_callback.vader | 26 |
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 + |