From cffedc6c1db94c69665338fa08582d438126aa85 Mon Sep 17 00:00:00 2001 From: Justin Woo Date: Mon, 19 Mar 2018 20:34:34 +0200 Subject: [PATCH] Install on need verify package (#94) * read and write add-from-bower from local package set * make add-from-bower write to local package set updates lts to use newer aeson-pretty to use trailing newline formatting * make add-from-bower write to local package set also adds a newer aeson-pretty to extra-deps to use trailing newline formatting * have verify pull dependencies per verifying package as the installation step checks to not reinstall existing packages, calling it multiple times with previously installed packages works fine. * concurrently traverse the dependencies for verify --- app/Main.hs | 22 ++++++++++++---------- stack.yaml | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index f01ba8a..76fb6f2 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -10,7 +10,7 @@ module Main where import qualified Control.Foldl as Foldl -import Control.Concurrent.Async (forConcurrently_) +import Control.Concurrent.Async (forConcurrently_, mapConcurrently) import qualified Data.Aeson as Aeson import Data.Aeson.Types (fieldLabelModifier) import Data.Aeson.Encode.Pretty @@ -474,17 +474,19 @@ verify arg = do verifyPackages names db pkg = do echoT $ "Verifying " <> pack (show $ length names) <> " packages." echoT "Warning: this could take some time!" - - let go (name_, pkgInfo) = (name_, ) <$> performInstall (set pkg) name_ pkgInfo - paths <- Map.fromList <$> traverse go (Map.toList db) - traverse_ (verifyPackage db paths) names - - verifyPackage :: PackageSet -> Map.Map PackageName Turtle.FilePath -> PackageName -> IO () - verifyPackage db paths name = do - let dirFor pkgName = fromMaybe (error ("verifyPackageSet: no directory for " <> show pkgName)) (Map.lookup pkgName paths) + traverse_ (verifyPackage db pkg) names + + verifyPackage :: PackageSet -> PackageConfig -> PackageName -> IO () + verifyPackage db pkg name = do + let + dirFor pkgName = + case Map.lookup pkgName db of + Nothing -> error ("verifyPackageSet: no directory for " <> show pkgName) + Just pkgInfo -> performInstall (set pkg) pkgName pkgInfo echoT ("Verifying package " <> runPackageName name) dependencies <- map fst <$> getTransitiveDeps db [name] - let srcGlobs = map (pathToTextUnsafe . ( ("src" "**" "*.purs")) . dirFor) dependencies + dirs <- mapConcurrently dirFor dependencies + let srcGlobs = map (pathToTextUnsafe . ( ("src" "**" "*.purs"))) dirs procs "purs" ("compile" : srcGlobs) empty data BowerInfoRepo = BowerInfoRepo diff --git a/stack.yaml b/stack.yaml index 7af5a28..eabc584 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,5 @@ resolver: lts-11.1 packages: - '.' -extra-deps: [] +extra-deps: +- aeson-pretty-0.8.5 # newer in lts-11.1 needed for formatting packages.json