language-docker 6.0.2 → 6.0.3
raw patch · 4 files changed
+16/−10 lines, 4 files
Files
- language-docker.cabal +2/−2
- src/Language/Docker/Parser.hs +5/−2
- src/Language/Docker/Syntax.hs +5/−6
- test/Language/Docker/ParserSpec.hs +4/−0
language-docker.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: e09dfb596ffa0aad47ade030ba31bd3d1fc4cb6395d7abef6290649bdedff1f6+-- hash: 62fe44c8aed9783d0a7b6fee136758ea45af0c4ad6af24b6496af43df80eb3b9 name: language-docker-version: 6.0.2+version: 6.0.3 synopsis: Dockerfile parser, pretty-printer and embedded DSL description: All functions for parsing, printing and writting Dockerfiles are exported through @Language.Docker@. For more fine-grained operations look for specific modules that implement a certain functionality. See the <https://github.com/hadolint/language-docker GitHub project> for the source-code and examples.
src/Language/Docker/Parser.hs view
@@ -15,6 +15,7 @@ import Data.Data import Data.List.NonEmpty (NonEmpty, fromList) import Data.Maybe (listToMaybe)+import Data.Semigroup ((<>)) import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T@@ -151,9 +152,11 @@ parseRegistry :: Parser Registry parseRegistry = do- name <- someUnless "a registry name" (== '/')+ domain <- someUnless "a domain name" (== '.')+ void $ char '.'+ tld <- someUnless "a TLD" (== '/') void $ char '/'- return $ Registry name+ return $ Registry (domain <> "." <> tld) taggedImage :: Parser BaseImage taggedImage = do
src/Language/Docker/Syntax.hs view
@@ -21,12 +21,11 @@ fromString img = if "/" `isInfixOf` img then let parts = endBy "/" img- in case parts of- reg:rest ->- Image- (Just (Registry (Text.pack reg)))- (Text.pack . intercalate "/" $ rest)- _ -> Image Nothing (Text.pack img)+ in if "." `isInfixOf` head parts+ then Image+ (Just (Registry (Text.pack (head parts))))+ (Text.pack . intercalate "/" $ tail parts)+ else Image Nothing (Text.pack img) else Image Nothing (Text.pack img) newtype Registry = Registry
test/Language/Docker/ParserSpec.hs view
@@ -47,6 +47,10 @@ assertAst "FROM myregistry.com:5000/imagename:5.12-dev" [From (TaggedImage (Image (Just "myregistry.com:5000") "imagename") "5.12-dev" Nothing)]+ it "Not a registry if no TLD" $+ assertAst+ "FROM myfolder/imagename:5.12-dev"+ [From (TaggedImage (Image Nothing "myfolder/imagename") "5.12-dev" Nothing)] describe "parse LABEL" $ do it "parse label" $ assertAst "LABEL foo=bar" [Label[("foo", "bar")]]