From 8a73cf85f8099db5bf583794c3b4c968939303c0 Mon Sep 17 00:00:00 2001 From: Erik Hollensbe Date: Wed, 15 Oct 2014 04:00:17 +0000 Subject: [PATCH 1/2] builder: strip blank lines before processing any line continuations. Docker-DCO-1.1-Signed-off-by: Erik Hollensbe (github: erikh) Upstream-commit: a1ef2207dd1f63a4104cfbf7927931174f5438a5 Component: engine --- components/engine/builder/parser/parser.go | 4 ++++ .../engine/builder/parser/testfiles/escapes/Dockerfile | 6 ++++++ components/engine/builder/parser/testfiles/escapes/result | 1 + 3 files changed, 11 insertions(+) diff --git a/components/engine/builder/parser/parser.go b/components/engine/builder/parser/parser.go index c24a925e43..ae721cca46 100644 --- a/components/engine/builder/parser/parser.go +++ b/components/engine/builder/parser/parser.go @@ -98,6 +98,10 @@ func Parse(rwc io.Reader) (*Node, error) { scanner := bufio.NewScanner(rwc) for scanner.Scan() { + if scanner.Text() == "" { + continue + } + line, child, err := parseLine(strings.TrimLeftFunc(scanner.Text(), unicode.IsSpace)) if err != nil { return nil, err diff --git a/components/engine/builder/parser/testfiles/escapes/Dockerfile b/components/engine/builder/parser/testfiles/escapes/Dockerfile index 87a8e028a2..1ffb17ef08 100644 --- a/components/engine/builder/parser/testfiles/escapes/Dockerfile +++ b/components/engine/builder/parser/testfiles/escapes/Dockerfile @@ -5,4 +5,10 @@ RUN apt-get \update && \ apt-get \"install znc -y ADD \conf\\" /.znc +RUN foo \ + +bar \ + +baz + CMD [ "\/usr\\\"/bin/znc", "-f", "-r" ] diff --git a/components/engine/builder/parser/testfiles/escapes/result b/components/engine/builder/parser/testfiles/escapes/result index ffeb2a8960..13e409cb1a 100644 --- a/components/engine/builder/parser/testfiles/escapes/result +++ b/components/engine/builder/parser/testfiles/escapes/result @@ -2,4 +2,5 @@ (maintainer "Erik \\\\Hollensbe \\\"") (run "apt-get \\update && apt-get \\\"install znc -y") (add "\\conf\\\\\"" "/.znc") +(run "foo bar baz") (cmd "/usr\\\"/bin/znc" "-f" "-r") From ac6df7dc241c6a7f7d040233b166d0514671c638 Mon Sep 17 00:00:00 2001 From: Erik Hollensbe Date: Wed, 15 Oct 2014 08:44:14 +0000 Subject: [PATCH 2/2] builder: comments should also be elided in the middle of statements following a line continuation. Docker-DCO-1.1-Signed-off-by: Erik Hollensbe (github: erikh) Upstream-commit: 96f342f7030c3955900f8f2ddf06b0d36b1d993c Component: engine --- components/engine/builder/parser/parser.go | 7 ++++--- .../builder/parser/testfiles/continueIndent/Dockerfile | 7 +++++++ .../engine/builder/parser/testfiles/continueIndent/result | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/components/engine/builder/parser/parser.go b/components/engine/builder/parser/parser.go index ae721cca46..0061779201 100644 --- a/components/engine/builder/parser/parser.go +++ b/components/engine/builder/parser/parser.go @@ -98,11 +98,12 @@ func Parse(rwc io.Reader) (*Node, error) { scanner := bufio.NewScanner(rwc) for scanner.Scan() { - if scanner.Text() == "" { + scannedLine := strings.TrimLeftFunc(scanner.Text(), unicode.IsSpace) + if stripComments(scannedLine) == "" { continue } - line, child, err := parseLine(strings.TrimLeftFunc(scanner.Text(), unicode.IsSpace)) + line, child, err := parseLine(scannedLine) if err != nil { return nil, err } @@ -111,7 +112,7 @@ func Parse(rwc io.Reader) (*Node, error) { for scanner.Scan() { newline := scanner.Text() - if newline == "" { + if stripComments(strings.TrimSpace(newline)) == "" { continue } diff --git a/components/engine/builder/parser/testfiles/continueIndent/Dockerfile b/components/engine/builder/parser/testfiles/continueIndent/Dockerfile index 6ce6c06fb7..454fdcc628 100644 --- a/components/engine/builder/parser/testfiles/continueIndent/Dockerfile +++ b/components/engine/builder/parser/testfiles/continueIndent/Dockerfile @@ -26,3 +26,10 @@ frog RUN echo good\ bye\ frog + +RUN echo hello \ +# this is a comment + +# this is a comment with a blank line surrounding it + +this is some more useful stuff diff --git a/components/engine/builder/parser/testfiles/continueIndent/result b/components/engine/builder/parser/testfiles/continueIndent/result index e440b836d4..9605558106 100644 --- a/components/engine/builder/parser/testfiles/continueIndent/result +++ b/components/engine/builder/parser/testfiles/continueIndent/result @@ -7,3 +7,4 @@ (run "echo hi world goodnight") (run "echo goodbyefrog") (run "echo goodbyefrog") +(run "echo hello this is some more useful stuff")