From f5e79e076002e7a9849a710c6d8c9108aa57793b Mon Sep 17 00:00:00 2001 From: Johnny Jazeix Date: Fri, 29 Oct 2021 17:43:08 +0200 Subject: [PATCH] allow use of host:port in a FROM instruction fixes: hadolint/hadolint#355 --- src/Language/Docker/Parser/From.hs | 6 ++---- test/Language/Docker/ParserSpec.hs | 4 ++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Language/Docker/Parser/From.hs b/src/Language/Docker/Parser/From.hs index 1e14de1..13d1869 100644 --- a/src/Language/Docker/Parser/From.hs +++ b/src/Language/Docker/Parser/From.hs @@ -9,11 +9,9 @@ import Language.Docker.Syntax parseRegistry :: (?esc :: Char) => Parser Registry parseRegistry = do - domain <- someUnless "a domain name" (== '.') - void $ char '.' - tld <- someUnless "a TLD" (== '/') + registry <- someUnless "a registry" (== '/') void $ char '/' - return $ Registry (domain <> "." <> tld) + return $ Registry (registry) parsePlatform :: (?esc :: Char) => Parser Platform parsePlatform = do diff --git a/test/Language/Docker/ParserSpec.hs b/test/Language/Docker/ParserSpec.hs index 971cc09..c72e77c 100644 --- a/test/Language/Docker/ParserSpec.hs +++ b/test/Language/Docker/ParserSpec.hs @@ -63,6 +63,10 @@ spec = do assertAst "FROM myregistry.com:5000/imagename:5.12-dev" [From (taggedImage (Image (Just "myregistry.com:5000") "imagename") "5.12-dev")] + it "parse without '.*' on registry and port and tag" $ + assertAst + "FROM myregistry:5000/imagename:5.12-dev" + [From (taggedImage (Image (Just "myregistry.com:5000") "imagename") "5.12-dev")] it "Not a registry if no TLD" $ assertAst "FROM myfolder/imagename:5.12-dev"