134401ccaSBram Moolenaar" dockerfile.vim - Syntax highlighting for Dockerfiles 209521313SBram Moolenaar" Maintainer: Honza Pokorny <https://honza.ca> 3*ebdf3c96SBram Moolenaar" Last Change: 2020 Feb 11 434401ccaSBram Moolenaar" License: BSD 534401ccaSBram Moolenaar 6560979edSBram Moolenaar" https://docs.docker.com/engine/reference/builder/ 734401ccaSBram Moolenaar 834401ccaSBram Moolenaarif exists("b:current_syntax") 934401ccaSBram Moolenaar finish 1034401ccaSBram Moolenaarendif 1134401ccaSBram Moolenaar 12560979edSBram Moolenaarsyntax include @JSON syntax/json.vim 13560979edSBram Moolenaarunlet b:current_syntax 14560979edSBram Moolenaar 15560979edSBram Moolenaarsyntax include @Shell syntax/sh.vim 16560979edSBram Moolenaarunlet b:current_syntax 1734401ccaSBram Moolenaar 1834401ccaSBram Moolenaarsyntax case ignore 19560979edSBram Moolenaarsyntax match dockerfileLinePrefix /\v^\s*(ONBUILD\s+)?\ze\S/ contains=dockerfileKeyword nextgroup=dockerfileInstruction skipwhite 20560979edSBram Moolenaarsyntax region dockerfileFrom matchgroup=dockerfileKeyword start=/\v^\s*(FROM)\ze(\s|$)/ skip=/\v\\\_./ end=/\v((^|\s)AS(\s|$)|$)/ contains=dockerfileOption 2134401ccaSBram Moolenaar 22560979edSBram Moolenaarsyntax keyword dockerfileKeyword contained ADD ARG CMD COPY ENTRYPOINT ENV EXPOSE HEALTHCHECK LABEL MAINTAINER ONBUILD RUN SHELL STOPSIGNAL USER VOLUME WORKDIR 23560979edSBram Moolenaarsyntax match dockerfileOption contained /\v(^|\s)\zs--\S+/ 2434401ccaSBram Moolenaar 25*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(\S+)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileValue 26*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(ADD|COPY)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileJSON 27*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(HEALTHCHECK)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileInstruction 28*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(CMD|ENTRYPOINT|RUN)>/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileShell 29*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(CMD|ENTRYPOINT|RUN)>\ze\s+\[/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON 30*ebdf3c96SBram Moolenaarsyntax match dockerfileInstruction contained /\v<(SHELL|VOLUME)>/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON 3156c860c3SBram Moolenaar 32560979edSBram Moolenaarsyntax region dockerfileString contained start=/\v"/ skip=/\v\\./ end=/\v"/ 33560979edSBram Moolenaarsyntax region dockerfileJSON contained keepend start=/\v\[/ skip=/\v\\\_./ end=/\v$/ contains=@JSON 34560979edSBram Moolenaarsyntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell 35560979edSBram Moolenaarsyntax region dockerfileValue contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString 3634401ccaSBram Moolenaar 37560979edSBram Moolenaarsyntax region dockerfileComment start=/\v^\s*#/ end=/\v$/ 38560979edSBram Moolenaarset commentstring=#\ %s 3934401ccaSBram Moolenaar 4034401ccaSBram Moolenaarhi def link dockerfileString String 4134401ccaSBram Moolenaarhi def link dockerfileKeyword Keyword 4234401ccaSBram Moolenaarhi def link dockerfileComment Comment 43560979edSBram Moolenaarhi def link dockerfileOption Special 44560979edSBram Moolenaar 45560979edSBram Moolenaarlet b:current_syntax = "dockerfile" 46