Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
eahlberg committed Jun 19, 2019
1 parent 106df70 commit 18a5e4f
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 18 deletions.
7 changes: 4 additions & 3 deletions app/Spago.hs
Expand Up @@ -37,7 +37,7 @@ data Command
| Sources

-- | Start a REPL.
| Repl [SourcePath] [ExtraArg]
| Repl (Maybe Int) (Maybe CacheFlag) [PackageName] [SourcePath] [ExtraArg]

-- | Generate documentation for the project and its dependencies
| Docs [SourcePath]
Expand Down Expand Up @@ -155,6 +155,7 @@ parser = do
sourcePaths = CLI.many (CLI.opt (Just . SourcePath) "path" 'p' "Source path to include")
packageName = CLI.arg (Just . PackageName) "package" "Specify a package name. You can list them with `list-packages`"
packageNames = CLI.many $ CLI.arg (Just . PackageName) "package" "Package name to add as dependency"
replPackageNames = CLI.many $ CLI.opt (Just . PackageName) "package" 'r' "Package name to add to the REPL as dependency"
passthroughArgs = many $ CLI.arg (Just . ExtraArg) " ..any `purs compile` option" "Options passed through to `purs compile`; use -- to separate"
buildOptions = BuildOptions <$> limitJobs <*> cacheFlag <*> watch <*> clearScreen <*> sourcePaths <*> noInstall <*> passthroughArgs
globalOptions = GlobalOptions <$> verbose
Expand Down Expand Up @@ -191,7 +192,7 @@ parser = do
repl =
( "repl"
, "Start a REPL"
, Repl <$> sourcePaths <*> passthroughArgs
, Repl <$> limitJobs <*> cacheFlag <*> replPackageNames <*> sourcePaths <*> passthroughArgs
)

test =
Expand Down Expand Up @@ -350,7 +351,7 @@ main = do
Build buildOptions -> Spago.Build.build buildOptions Nothing
Test modName buildOptions -> Spago.Build.test modName buildOptions
Run modName buildOptions -> Spago.Build.run modName buildOptions
Repl paths pursArgs -> Spago.Build.repl paths pursArgs
Repl limitJobs cacheConfig replPackageNames paths pursArgs -> Spago.Build.repl limitJobs cacheConfig replPackageNames paths pursArgs
BundleApp modName tPath shouldBuild buildOptions
-> Spago.Build.bundleApp WithMain modName tPath shouldBuild buildOptions
BundleModule modName tPath shouldBuild buildOptions
Expand Down
32 changes: 18 additions & 14 deletions src/Spago/Build.hs
Expand Up @@ -86,29 +86,33 @@ build BuildOptions{..} maybePostBuild = do
Watch -> Watch.watch (Set.fromAscList $ fmap Glob.compile absoluteProjectGlobs) shouldClear buildAction

-- | Start a repl
repl :: Spago m => [Purs.SourcePath] -> [Purs.ExtraArg] -> m ()
repl sourcePaths passthroughArgs = do
repl :: Spago m => Maybe Int -> Maybe GlobalCache.CacheFlag -> [PackageSet.PackageName] -> [Purs.SourcePath] -> [Purs.ExtraArg] -> m ()
repl jobsLimit cacheFlag newPackages sourcePaths passthroughArgs = do
echoDebug "Running `spago repl`"

hasPackagesDhall <- testfile "packages.dhall"
if hasPackagesDhall
then do
config <- Config.ensureConfig
try Config.ensureConfig >>= \case
Right config -> do
deps <- Packages.getProjectDeps config
let globs = Packages.getGlobs deps <> Config.configSourcePaths config <> sourcePaths
Purs.repl globs passthroughArgs
else Temp.withSystemTempDirectory "spago-repl-tmp" $ \dir -> do
Turtle.cd (Turtle.decodeString dir)
Left (err :: SpagoError) -> do
echoDebug $ tshow err
cacheDir <- GlobalCache.getGlobalCacheDir
Temp.withTempDirectory cacheDir "spago-repl-tmp" $ \dir -> do
Turtle.cd (Turtle.decodeString dir)

Packages.initProject False
Packages.initProject False

config <- Config.parseConfig
deps <- Packages.getProjectDeps config
let globs = Packages.getGlobs deps <> Config.configSourcePaths config <> sourcePaths
config@Config.Config{ packageSet = PackageSet.PackageSet{..}, ..} <- Config.ensureConfig

Packages.install Nothing Nothing (fmap fst deps)
let updatedConfig = Config.Config name (dependencies <> newPackages) (Config.packageSet config) configSourcePaths

Purs.repl globs passthroughArgs
deps <- Packages.getProjectDeps updatedConfig
let globs = Packages.getGlobs deps <> Config.configSourcePaths updatedConfig <> sourcePaths

Fetch.fetchPackages jobsLimit cacheFlag deps packagesMinPursVersion

Purs.repl globs passthroughArgs

-- | Test the project: compile and run "Test.Main"
-- (or the provided module name) with node
Expand Down
1 change: 0 additions & 1 deletion src/Spago/Config.hs
Expand Up @@ -2,7 +2,6 @@
module Spago.Config
( makeConfig
, ensureConfig
, parseConfig
, addDependencies
, Config(..)
) where
Expand Down
1 change: 1 addition & 0 deletions src/Spago/Prelude.hs
Expand Up @@ -60,6 +60,7 @@ module Spago.Prelude
, withTaskGroup'
, Turtle.mktempdir
, getModificationTime
, SpagoError(..)
) where


Expand Down

0 comments on commit 18a5e4f

Please sign in to comment.