<commit_before>homepage: https://github.com/hadolint/language-docker#readme
changelog-type: ''
hash: e6f9b1fead96cb060097aefc7aac54a29117efc2668d20eb31f7cfb16a723685
test-bench-deps:
  free: -any
  bytestring: ! '>=0.10'
  split: ! '>=0.2'
  base: ! '>=4.8 && <5'
  time: -any
  unordered-containers: -any
  hspec: -any
  text: -any
  language-docker: -any
  filepath: -any
  process: -any
  parsec: ! '>=3.1'
  semigroups: -any
  HUnit: ! '>=1.2'
  th-lift-instances: -any
  mtl: -any
  transformers: -any
  QuickCheck: -any
  th-lift: -any
  pretty: -any
  Glob: -any
  aeson: -any
  template-haskell: -any
  yaml: -any
  directory: -any
maintainer: ! '<EMAIL>,

  <EMAIL>'
synopsis: Dockerfile parser, pretty-printer and embedded DSL
changelog: ''
basic-deps:
  free: -any
  bytestring: ! '>=0.10'
  split: ! '>=0.2'
  base: ! '>=4.8 && <5'
  time: -any
  unordered-containers: -any
  text: -any
  filepath: -any
  parsec: ! '>=3.1'
  semigroups: -any
  th-lift-instances: -any
  mtl: -any
  transformers: -any
  th-lift: -any
  pretty: -any
  Glob: -any
  aeson: -any
  template-haskell: -any
  yaml: -any
  directory: -any
all-versions:
- '1.0.0'
- '2.0.0'
- '2.0.1'
author: ! '<NAME>,

  <NAME>,

  <NAME>'
latest: '2.0.1'
description-type: markdown
description: ! "[![Build Status][travis-img]][travis]\n[![Hackage][hackage-img]][hackage]\n[![GPL-3
  licensed][license-img]][license]\n\n# haskell-language-docker\n\nDockerfile parser,
  pretty-printer and embedded DSL\n\nProvides de ability to parse docker files, a
  pretty-printer and EDSL for\nwritting Dockerfiles in Haskell.\n\n- [Parsing files](#parsing-files)\n-
  [Parsing strings](#parsing-strings)\n- [Pretty-printing files](#pretty-printing-files)\n-
  [Writing Dockerfiles in Haskell](#writing-dockerfiles-in-haskell)\n- [Using the
  QuasiQuoter](#using-the-quasiquoter)\n- [Templating Dockerfiles in Haskell](#templating-dockerfiles-in-haskell)\n-
  [Using IO in the DSL](#using-io-in-the-dsl)\n\n## Parsing files\n\n```haskell\nimport
  Language.Docker\nmain = do\n    ef <- parseFile \"./Dockerfile\"\n    print ef\n```\n\n##
  Parsing strings\n\n```haskell\nimport Language.Docker\nmain = do\n    c <- readFile
  \"./Dockerfile\"\n    print (parseString c)\n```\n\n## Pretty-printing files\n\n```haskell\nimport
  Language.Docker\nmain = do\n    Right d <- parseFile \"./Dockerfile\"\n    putStr
  (prettyPrint d)\n```\n\n## Writing Dockerfiles in Haskell\n\n```haskell\n{-# LANGUAGE
  OverloadedStrings #-}\nimport Language.Docker\nmain = putStr $ toDockerfileStr $
  do\n    from \"node\"\n    run \"apt-get update\"\n    runArgs [\"apt-get\", \"install\",
  \"something\"]\n    -- ...\n```\n\n## Using the QuasiQuoter\n\n```haskell\n{-# LANGUAGE
  OverloadedStrings #-}\n{-# LANGUAGE QuasiQuotes       #-}\nimport Language.Docker\nmain
  = putStr $ toDockerfileStr $ do\n    from \"node\"\n    run \"apt-get update\"\n
  \   [edockerfile|\n    RUN apt-get update\n    CMD node something.js\n    |]\n    --
  ...\n```\n\n## Templating Dockerfiles in Haskell\n\n```haskell\n{-# LANGUAGE FlexibleContexts
  \ #-}\n{-# LANGUAGE OverloadedStrings #-}\n{-# LANGUAGE OverloadedLists #-}\nimport
  Control.Monad\nimport Language.Docker\nimport Data.String (fromString)\n\ntags =
  [\"7.8\", \"7.10\", \"8\"]\ncabalSandboxBuild packageName = do\n    let cabalFile
  = packageName ++ \".cabal\"\n    run \"cabal sandbox init\"\n    run \"cabal update\"\n
  \   add [fromString cabalFile] (fromString $ \"/app/\" ++ cabalFile)\n    run \"cabal
  install --only-dep -j\"\n    add \".\" \"/app/\"\n    run \"cabal build\"\nmain
  =\n    forM_ tags $ \\tag -> do\n        let df = toDockerfileStr $ do\n            from
  (\"haskell\" `tagged` tag)\n            cabalSandboxBuild \"mypackage\"\n        writeFile
  (\"./examples/templating-\" ++ tag ++ \".dockerfile\") df\n```\n\n## Using IO in
  the DSL\nBy default the DSL runs in the `Identity` monad. By running in IO we can\nsupport
  more features like file globbing:\n\n```haskell\n{-# LANGUAGE OverloadedStrings
  #-}\n{-# LANGUAGE OverloadedLists #-}\nimport           Language.Docker\nimport
  qualified System.Directory     as Directory\nimport qualified System.FilePath      as
  FilePath\nimport qualified System.FilePath.Glob as Glob\nimport Data.String (fromString)\nmain
  = do\n    str <- toDockerfileStrIO $ do\n        fs <- liftIO $ do\n            cwd
  <- Directory.getCurrentDirectory\n            fs <- Glob.glob \"./test/*.hs\"\n
  \           return (map (FilePath.makeRelative cwd) fs)\n        from \"ubuntu\"\n\tmapM_
  (\\f -> add [fromString f] (fromString $ \"/app/\" ++ takeFileName f)) fs\n    putStr
  str\n```\n\n[hackage-img]: https://img.shields.io/hackage/v/language-docker.svg\n[hackage]:
  https://hackage.haskell.org/package/language-docker\n[travis-img]: https://travis-ci.org/hadolint/language-docker.svg?branch=master\n[travis]:
  https://travis-ci.org/hadolint/language-docker\n[license-img]: https://img.shields.io/badge/license-GPL--3-blue.svg\n[license]:
  https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)\n"
license-name: GPL-3
<commit_msg>Update from Hackage at 2018-03-12T03:51:06Z<commit_after>homepage: https://github.com/hadolint/language-docker#readme
changelog-type: ''
hash: 63be8570c0a4724327378f1e8a01f461f508d1c7ac7f5a6b18f575c3e9407e8c
test-bench-deps:
  free: -any
  bytestring: ! '>=0.10'
  split: ! '>=0.2'
  base: ! '>=4.8 && <5'
  time: -any
  unordered-containers: -any
  hspec: -any
  text: -any
  language-docker: -any
  filepath: -any
  process: -any
  parsec: ! '>=3.1'
  semigroups: -any
  HUnit: ! '>=1.2'
  th-lift-instances: -any
  mtl: -any
  transformers: -any
  QuickCheck: -any
  th-lift: -any
  pretty: -any
  Glob: -any
  aeson: -any
  template-haskell: -any
  yaml: -any
  directory: -any
maintainer: ! '<EMAIL>,

  <EMAIL>'
synopsis: Dockerfile parser, pretty-printer and embedded DSL
changelog: ''
basic-deps:
  free: -any
  bytestring: ! '>=0.10'
  split: ! '>=0.2'
  base: ! '>=4.8 && <5'
  time: -any
  unordered-containers: -any
  text: -any
  filepath: -any
  parsec: ! '>=3.1'
  semigroups: -any
  th-lift-instances: -any
  mtl: -any
  transformers: -any
  th-lift: -any
  pretty: -any
  Glob: -any
  aeson: -any
  template-haskell: -any
  yaml: -any
  directory: -any
all-versions:
- '1.0.0'
- '2.0.0'
- '2.0.1'
- '3.0.0'
author: ! '<NAME>,

  <NAME>,

  <NAME>'
latest: '3.0.0'
description-type: markdown
description: ! "[![Build Status][travis-img]][travis]\n[![Hackage][hackage-img]][hackage]\n[![GPL-3
  licensed][license-img]][license]\n\n# haskell-language-docker\n\nDockerfile parser,
  pretty-printer and embedded DSL\n\nProvides de ability to parse docker files, a
  pretty-printer and EDSL for\nwritting Dockerfiles in Haskell.\n\n- [Parsing files](#parsing-files)\n-
  [Parsing strings](#parsing-strings)\n- [Pretty-printing files](#pretty-printing-files)\n-
  [Writing Dockerfiles in Haskell](#writing-dockerfiles-in-haskell)\n- [Using the
  QuasiQuoter](#using-the-quasiquoter)\n- [Templating Dockerfiles in Haskell](#templating-dockerfiles-in-haskell)\n-
  [Using IO in the DSL](#using-io-in-the-dsl)\n\n## Parsing files\n\n```haskell\nimport
  Language.Docker\nmain = do\n    ef <- parseFile \"./Dockerfile\"\n    print ef\n```\n\n##
  Parsing strings\n\n```haskell\nimport Language.Docker\nmain = do\n    c <- readFile
  \"./Dockerfile\"\n    print (parseString c)\n```\n\n## Pretty-printing files\n\n```haskell\nimport
  Language.Docker\nmain = do\n    Right d <- parseFile \"./Dockerfile\"\n    putStr
  (prettyPrint d)\n```\n\n## Writing Dockerfiles in Haskell\n\n```haskell\n{-# LANGUAGE
  OverloadedStrings #-}\nimport Language.Docker\nmain = putStr $ toDockerfileStr $
  do\n    from \"node\"\n    run \"apt-get update\"\n    runArgs [\"apt-get\", \"install\",
  \"something\"]\n    -- ...\n```\n\n## Using the QuasiQuoter\n\n```haskell\n{-# LANGUAGE
  OverloadedStrings #-}\n{-# LANGUAGE QuasiQuotes       #-}\nimport Language.Docker\nmain
  = putStr $ toDockerfileStr $ do\n    from \"node\"\n    run \"apt-get update\"\n
  \   [edockerfile|\n    RUN apt-get update\n    CMD node something.js\n    |]\n    --
  ...\n```\n\n## Templating Dockerfiles in Haskell\n\n```haskell\n{-# LANGUAGE FlexibleContexts
  \ #-}\n{-# LANGUAGE OverloadedStrings #-}\n{-# LANGUAGE OverloadedLists #-}\nimport
  Control.Monad\nimport Language.Docker\nimport Data.String (fromString)\n\ntags =
  [\"7.8\", \"7.10\", \"8\"]\ncabalSandboxBuild packageName = do\n    let cabalFile
  = packageName ++ \".cabal\"\n    run \"cabal sandbox init\"\n    run \"cabal update\"\n
  \   add [fromString cabalFile] (fromString $ \"/app/\" ++ cabalFile)\n    run \"cabal
  install --only-dep -j\"\n    add \".\" \"/app/\"\n    run \"cabal build\"\nmain
  =\n    forM_ tags $ \\tag -> do\n        let df = toDockerfileStr $ do\n            from
  (\"haskell\" `tagged` tag)\n            cabalSandboxBuild \"mypackage\"\n        writeFile
  (\"./examples/templating-\" ++ tag ++ \".dockerfile\") df\n```\n\n## Using IO in
  the DSL\nBy default the DSL runs in the `Identity` monad. By running in IO we can\nsupport
  more features like file globbing:\n\n```haskell\n{-# LANGUAGE OverloadedStrings
  #-}\n{-# LANGUAGE OverloadedLists #-}\nimport           Language.Docker\nimport
  qualified System.Directory     as Directory\nimport qualified System.FilePath      as
  FilePath\nimport qualified System.FilePath.Glob as Glob\nimport Data.List.NonEmpty
  (fromList)\n\nmain = do\n    str <- toDockerfileStrIO $ do\n        fs <- liftIO
  $ do\n            cwd <- Directory.getCurrentDirectory\n            fs <- Glob.glob
  \"./test/*.hs\"\n\t    let relativeFiles = map (FilePath.makeRelative cwd) fs\n
  \           return (fromList relativeFiles)\n        from \"ubuntu\"\n\tcopy $ (toSources
  fs) `to` \"/app/\"\n    putStr str\n```\n\n[hackage-img]: https://img.shields.io/hackage/v/language-docker.svg\n[hackage]:
  https://hackage.haskell.org/package/language-docker\n[travis-img]: https://travis-ci.org/hadolint/language-docker.svg?branch=master\n[travis]:
  https://travis-ci.org/hadolint/language-docker\n[license-img]: https://img.shields.io/badge/license-GPL--3-blue.svg\n[license]:
  https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)\n"
license-name: GPL-3

{'fraction_non_alphanumeric': 0.18019417475728156, 'fraction_numerical': 0.018058252427184465, 'mean_word_length': 3.005054432348367, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 34, 'https://': 14, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2114564', 'n_tokens_mistral': 4242, 'n_tokens_neox': 3972, 'n_words': 800}