add optional leading comment to shell_command
Previously, if a shell command started with a comment line, parsing would fail because shell_command expected the first line to be a shell line. This adds an optional comment to the beginning of the shell_command to handle this correctly.
This commit is contained in:
parent
98e201aaf7
commit
28ac8596ba
|
@ -38,3 +38,40 @@ RUN echo hello \
|
|||
(comment)
|
||||
(comment)
|
||||
(shell_fragment))))
|
||||
|
||||
==================
|
||||
Run with immediate line continuation
|
||||
==================
|
||||
|
||||
RUN \
|
||||
# comment
|
||||
world
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(run_instruction
|
||||
(line_continuation)
|
||||
(shell_command
|
||||
(comment)
|
||||
(shell_fragment))))
|
||||
|
||||
==================
|
||||
Run with immediate continuation and comment
|
||||
==================
|
||||
|
||||
RUN \
|
||||
echo foo \
|
||||
# comment
|
||||
echo foo
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(run_instruction
|
||||
(line_continuation)
|
||||
(shell_command
|
||||
(shell_fragment)
|
||||
(line_continuation)
|
||||
(comment)
|
||||
(shell_fragment))))
|
||||
|
|
11
grammar.js
11
grammar.js
|
@ -180,7 +180,9 @@ module.exports = grammar({
|
|||
seq(
|
||||
field("name", $._env_key),
|
||||
token.immediate("="),
|
||||
optional(field("value", choice($.double_quoted_string, $.unquoted_string)))
|
||||
optional(
|
||||
field("value", choice($.double_quoted_string, $.unquoted_string))
|
||||
)
|
||||
),
|
||||
|
||||
_spaced_env_pair: ($) =>
|
||||
|
@ -211,7 +213,8 @@ module.exports = grammar({
|
|||
)
|
||||
),
|
||||
|
||||
image_name: ($) => seq(
|
||||
image_name: ($) =>
|
||||
seq(
|
||||
choice(/[^@:\s\$-]/, $.expansion),
|
||||
repeat(choice(/[^@:\s\$]+/, $.expansion))
|
||||
),
|
||||
|
@ -249,11 +252,13 @@ module.exports = grammar({
|
|||
|
||||
shell_command: ($) =>
|
||||
seq(
|
||||
repeat($._comment_line),
|
||||
$.shell_fragment,
|
||||
repeat(
|
||||
seq(
|
||||
alias($.required_line_continuation, $.line_continuation),
|
||||
repeat($._comment_line), $.shell_fragment
|
||||
repeat($._comment_line),
|
||||
$.shell_fragment
|
||||
)
|
||||
)
|
||||
),
|
||||
|
|
|
@ -1251,6 +1251,13 @@
|
|||
"shell_command": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "REPEAT",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_comment_line"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "shell_fragment"
|
||||
|
|
7250
src/parser.c
7250
src/parser.c
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue