devtools 0.0.3 → 0.1.0
raw patch · 6 files changed
+80/−59 lines, 6 filesdep ~base
Dependency ranges changed: base
Files
- app/Main.hs +0/−8
- devtools.cabal +7/−32
- src/Devtools.hs +21/−11
- src/Devtools/Config.hs +15/−0
- src/Devtools/Dependencies.hs +29/−8
- test/Test.hs +8/−0
− app/Main.hs
@@ -1,8 +0,0 @@-module Main (main) where--import System.IO (IO)--import qualified Devtools--main :: IO ()-main = Devtools.main Devtools.defaultConfig
devtools.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 10ba25189f0663169075ea8771f091d9af0ff814b260061a20374044460019e2+-- hash: 1ab3f83c389cae0745d3d2ddb4de502d0a96c2d0b770b4c1a5a5f1ac1dcbd7a1 name: devtools-version: 0.0.3+version: 0.1.0 synopsis: Haskell development tool agregate description: An attempt to group development that would typically run on CI / local into one tasty interface.@@ -34,6 +34,7 @@ library exposed-modules: Devtools+ Devtools.Config Devtools.Dependencies Devtools.HLint Devtools.Prelude@@ -45,7 +46,7 @@ ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path build-depends: Diff >0.3 && <0.5- , base >4.12 && <4.14+ , base >4.12 && <4.15 , bytestring >=0.10 && <0.11 , cmdargs >=0.10.20 && <0.11 , filepath >=1.4 && <1.5@@ -62,42 +63,16 @@ ghc-options: -Wwarn default-language: Haskell2010 -executable devtools- main-is: app/Main.hs- other-modules:- Paths_devtools- default-extensions: DerivingStrategies LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards StrictData- ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path -rtsopts -threaded -with-rtsopts=-N- build-depends:- Diff >0.3 && <0.5- , base >4.12 && <4.14- , bytestring >=0.10 && <0.11- , cmdargs >=0.10.20 && <0.11- , devtools- , filepath >=1.4 && <1.5- , hlint >3.1 && <4- , mprelude >=0.2.0 && <0.3- , source-constraints >=0.0.1 && <0.1- , tasty >=1.3.1 && <1.4- , tasty-mgolden >=0.0.1 && <0.1- , text >=1.2 && <1.3- , typed-process >=0.2 && <0.3- if flag(development)- ghc-options: -Werror- else- ghc-options: -Wwarn- default-language: Haskell2010--test-suite devtools-test+test-suite test type: exitcode-stdio-1.0- main-is: app/Main.hs+ main-is: test/Test.hs other-modules: Paths_devtools default-extensions: DerivingStrategies LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards StrictData ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path -rtsopts -threaded -with-rtsopts=-N build-depends: Diff >0.3 && <0.5- , base >4.12 && <4.14+ , base >4.12 && <4.15 , bytestring >=0.10 && <0.11 , cmdargs >=0.10.20 && <0.11 , devtools
src/Devtools.hs view
@@ -1,5 +1,14 @@-module Devtools (Config(..), defaultConfig, defaultMain, main, testTree) where+module Devtools+ ( Config(..)+ , Target(..)+ , defaultConfig+ , defaultMain+ , main+ , testTree+ )+where +import Devtools.Config import Devtools.Prelude import System.IO (putStrLn) @@ -7,13 +16,10 @@ import qualified Devtools.HLint as HLint import qualified Test.Tasty as Tasty -newtype Config = Config- { hlintArguments :: [String]- }- defaultConfig :: Config defaultConfig = Config { hlintArguments = []+ , targets = [] } defaultMain :: IO ()@@ -22,10 +28,14 @@ main :: Config -> IO () main config = do putStrLn empty- Tasty.defaultMain $ testTree config+ Tasty.defaultMain =<< testTree config -testTree :: Config -> Tasty.TestTree-testTree Config{..} = Tasty.testGroup "devtools"- [ Dependencies.testTree- , HLint.testTree hlintArguments- ]+testTree :: Config -> IO Tasty.TestTree+testTree Config{..} = do+ filename <- Dependencies.getFilename++ pure $ Tasty.testGroup+ "devtools"+ [ Dependencies.testTree filename targets+ , HLint.testTree hlintArguments+ ]
+ src/Devtools/Config.hs view
@@ -0,0 +1,15 @@+module Devtools.Config where++import Devtools.Prelude++import qualified Data.Text as Text++newtype Target = Target Text++targetString :: Target -> String+targetString (Target text) = Text.unpack text++data Config = Config+ { hlintArguments :: [String]+ , targets :: [Target]+ }
src/Devtools/Dependencies.hs view
@@ -1,20 +1,25 @@-module Devtools.Dependencies (testTree) where+module Devtools.Dependencies+ ( getFilename+ , testTree+ )+where import Data.Tuple (fst)+import Devtools.Config import Devtools.Prelude+import System.FilePath (FilePath, (</>)) import qualified Data.ByteString.Lazy as LBS import qualified Data.Text.Encoding as Text+import qualified System.Environment as Environment+import qualified System.FilePath as FilePath import qualified System.Process.Typed as Process import qualified Test.Tasty as Tasty import qualified Test.Tasty.MGolden as Tasty -testTree :: Tasty.TestTree-testTree =- Tasty.goldenTest- "dependencies"- "test/stack-dependencies.txt"- readDependenciesText+testTree :: FilePath -> [Target] -> Tasty.TestTree+testTree filename targets =+ Tasty.goldenTest "dependencies" filename readDependenciesText where readDependenciesText :: IO Text readDependenciesText@@ -22,4 +27,20 @@ readDependencies :: IO LBS.ByteString readDependencies- = fst <$> Process.readProcess_ (Process.proc "stack" ["ls", "dependencies", "--test"])+ = fst <$> Process.readProcess_ (Process.proc "stack" arguments)++ arguments :: [String]+ arguments =+ [ "ls"+ , "dependencies"+ , "--test"+ ] <> (targetString <$> targets)++getFilename :: IO FilePath+getFilename = do+ prefix <- getPrefix+ pure $ "test" </> prefix <> "-dependencies.txt"+ where+ getPrefix+ = maybe "stack" (FilePath.dropExtension . FilePath.takeFileName)+ <$> Environment.lookupEnv "STACK_YAML"
+ test/Test.hs view
@@ -0,0 +1,8 @@+module Main (main) where++import System.IO (IO)++import qualified Devtools++main :: IO ()+main = Devtools.main Devtools.defaultConfig