Skip to content

Commit

Permalink
When using actionlint look for & use a config file
Browse files Browse the repository at this point in the history
Actionlint supports a config file and it lives in a very searchable
path, as the only files it acts on are in the `.github` directory
already.

Look for an `actionlint.yml` and `.yaml` in that path, and use the
config if its there.
  • Loading branch information
beahues committed Nov 18, 2024
1 parent 4fca382 commit 382a232
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions ale_linters/yaml/actionlint.vim
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,32 @@ function! ale_linters#yaml#actionlint#GetCommand(buffer) abort
let l:options .= ale#Pad('-oneline')
endif

let l:configfile = ale_linters#yaml#actionlint#GitRepoHasConfig(a:buffer)

if !empty(l:configfile)
let l:options .= ale#Pad('-config-file ' . l:configfile)
endif

return '%e' . ale#Pad(l:options) . ' - '
endfunction

" If we have a actionlint.yml or actionlint.yaml in our github directory
" use that as our config file.
function! ale_linters#yaml#actionlint#GitRepoHasConfig(buffer) abort
let l:filename = expand('#' . a:buffer . ':p')
let l:configfilebase = substitute(l:filename, '\.github/.*', '.github/actionlint.','')

for l:ext in ['yml', 'yaml']
let l:configfile = l:configfilebase . l:ext

if filereadable(l:configfile)
return l:configfile
endif
endfor

return ''
endfunction

function! ale_linters#yaml#actionlint#Handle(buffer, lines) abort
" Matches patterns line the following:
".github/workflows/main.yml:19:0: could not parse as YAML: yaml: line 19: mapping values are not allowed in this context [yaml-syntax]
Expand Down

0 comments on commit 382a232

Please sign in to comment.