language-docker 3.0.1 → 4.0.0
raw patch · 4 files changed
+3/−141 lines, 4 filesdep −aesondep −transformersdep −unordered-containers
Dependencies removed: aeson, transformers, unordered-containers, yaml
Files
- language-docker.cabal +3/−16
- src/Language/Docker/EDSL/Plugins.hs +0/−2
- src/Language/Docker/Predef.hs +0/−104
- test/Language/Docker/EDSL/PluginsSpec.hs +0/−19
language-docker.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 07ef36c63d55fe09579fa173145f7258f240ae908b7e7bdeb96f4b088c21b709+-- hash: 70e47067ca87323030f8daa6fd4e2848e695e6068ef611c71c89d5bd5694da25 name: language-docker-version: 3.0.1+version: 4.0.0 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.@@ -36,7 +36,6 @@ exposed-modules: Language.Docker Language.Docker.Parser- Language.Docker.Predef Language.Docker.PrettyPrint Language.Docker.Normalize Language.Docker.Syntax@@ -46,17 +45,13 @@ Language.Docker.EDSL.Quasi Language.Docker.EDSL.Types other-modules:- Language.Docker.EDSL.Plugins Paths_language_docker hs-source-dirs: src ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-orphans build-depends:- Glob- , aeson- , base >=4.8 && <5+ base >=4.8 && <5 , bytestring >=0.10- , directory , filepath , free , mtl@@ -69,16 +64,12 @@ , th-lift , th-lift-instances , time- , transformers- , unordered-containers- , yaml default-language: Haskell2010 test-suite hspec type: exitcode-stdio-1.0 main-is: Spec.hs other-modules:- Language.Docker.EDSL.PluginsSpec Language.Docker.EDSL.QuasiSpec Language.Docker.EDSLSpec Language.Docker.ExamplesSpec@@ -90,7 +81,6 @@ Glob , HUnit >=1.2 , QuickCheck- , aeson , base >=4.8 && <5 , bytestring >=0.10 , directory@@ -109,7 +99,4 @@ , th-lift , th-lift-instances , time- , transformers- , unordered-containers- , yaml default-language: Haskell2010
− src/Language/Docker/EDSL/Plugins.hs
@@ -1,2 +0,0 @@-module Language.Docker.EDSL.Plugins where-
− src/Language/Docker/Predef.hs
@@ -1,104 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE OverloadedLists #-}--module Language.Docker.Predef where--import Control.Monad-import Control.Monad.Free.Class-import Control.Monad.IO.Class-import Data.Aeson (Value(..))-import qualified Data.HashMap.Strict as HashMap-import Data.List.NonEmpty (fromList)-import Data.Maybe-import Data.Monoid-import Data.Text (Text)-import qualified Data.Text as Text-import qualified Data.Text.IO as Text-import qualified Data.Yaml as Yaml-import System.Directory-import System.FilePath-import qualified System.FilePath.Glob as Glob--import Language.Docker-import Language.Docker.EDSL.Types--appendLnIfMissing :: FilePath -> Text -> IO ()-appendLnIfMissing fp cts = do- e <- doesFileExist fp- unless e (Text.writeFile fp "")- txt <- Text.lines <$> Text.readFile fp- unless (cts `elem` txt) $ Text.writeFile fp (Text.unlines (txt <> [cts]))--dockerIgnore :: Text -> IO ()-dockerIgnore = appendLnIfMissing ".dockerignore"--addGlob :: (MonadIO m, MonadFree EInstruction m) => String -> TargetPath -> m ()-addGlob pattern dest = do- fs <-- liftIO $ do- fs <- Glob.glob pattern- cwd <- getCurrentDirectory- let fs' = map (makeRelative cwd . normalise) fs- forM fs' $ \f -> do- isdir <- doesDirectoryExist f- return $- if isdir- then (SourcePath $ f <> "/")- else (SourcePath f)- case fs of- [] -> return ()- _ -> add (fromList fs) dest--copyGlob :: (MonadIO m, MonadFree EInstruction m) => String -> TargetPath -> m ()-copyGlob = addGlob--stackBuild :: (Monad m, MonadIO m, MonadFree EInstruction m) => m ()-stackBuild = do- sts <- liftIO getStackYamlResolver- stackBuild' sts (return ())- where- getStackYamlResolver = do- mhm <- Yaml.decodeFile "./stack.yaml" :: IO (Maybe Value)- return $- fromMaybe "latest" $ do- hm <- mhm- o <-- case hm of- Object o -> return o- _ -> Nothing- rs <- HashMap.lookup "resolver" o- toString rs- where- toString (String m) = Just (Text.unpack m)- toString _ = Nothing--stackBuild' :: (Monad m, MonadIO m, MonadFree EInstruction m) => String -> m () -> m ()-stackBuild' tag extra = do- liftIO $ dockerIgnore ".stack-work"- liftIO $ dockerIgnore ".cabal-sandbox"- from ("fpco" `tagged` tag)- extra- add ["./package.yaml"] "/app/package.yaml"- addGlob "./*.cabal" "/app/"- add ["./stack.yaml"] "/app/stack.yaml"- workdir "/app/"- run "stack build --only-dependencies"- add ["."] "/app/stack.yaml"- run "stack build"--nodejs :: (Monad m, MonadIO m, MonadFree EInstruction m) => m ()-nodejs = nodejs' "6" (return ())--nodejs' :: (Monad m, MonadIO m, MonadFree EInstruction m) => String -> m () -> m ()-nodejs' tag extra = do- liftIO $ dockerIgnore "node_modules"- liftIO $ dockerIgnore "bower_components"- from ("node" `tagged` tag)- extra- add ["./package.json"] "/app/package.json"- workdir "/app/"- run "npm install"- add ["."] "/app/"- cmd "npm start"
− test/Language/Docker/EDSL/PluginsSpec.hs
@@ -1,19 +0,0 @@-module Language.Docker.EDSL.PluginsSpec- where---- import Language.Docker.EDSL--- import Language.Docker.EDSL.Plugins-import Test.Hspec--spec =- describe "listPlugins" $- it "lists docker images matching language-docker-*" pending- -- str <- toDockerFileStrIO $ do- -- ds <- liftIO (glob "./test/*.hs")- -- from "ubuntu"- -- mapM_ add ds- -- str `shouldBe` unlines [ "FROM ubuntu"- -- , "ADD Spec.hs"- -- , "ADD SanitySpec.hs"- -- , "ADD Test.hs"- -- ]