@@ -536,8 +536,7 @@ main = do
536536 \c -> Aff .launchAff_ case c of
537537 Cmd'SpagoCmd (SpagoCmd globalArgs@{ offline, migrateConfig } command) -> do
538538 logOptions <- mkLogOptions startingTime globalArgs
539- rootPath <- Path .mkRoot =<< Paths .cwd
540- runSpago { logOptions, rootPath } case command of
539+ runSpago { logOptions } case command of
541540 Sources args -> do
542541 { env } <- mkFetchEnv
543542 { packages: mempty
@@ -552,6 +551,7 @@ main = do
552551 void $ runSpago env (Sources .run { json: args.json })
553552 Init args@{ useSolver } -> do
554553 -- Fetch the registry here so we can select the right package set later
554+ rootPath <- Path .mkRoot =<< Paths .cwd
555555 env <- mkRegistryEnv offline <#> Record .union { rootPath }
556556 setVersion <- parseSetVersion args.setVersion
557557 void $ runSpago env $ Init .run { mode: args.mode, setVersion, useSolver }
@@ -599,7 +599,8 @@ main = do
599599 void $ runSpago publishEnv (Publish .publish {})
600600
601601 Repl args@{ selectedPackage } -> do
602- packages <- FS .exists (rootPath </> " spago.yaml" ) >>= case _ of
602+ cwd <- Paths .cwd
603+ packages <- FS .exists (cwd </> " spago.yaml" ) >>= case _ of
603604 true -> do
604605 -- if we have a config then we assume it's a workspace, and we can run a repl in the project
605606 pure mempty -- TODO newPackages
@@ -661,13 +662,14 @@ main = do
661662 testEnv <- runSpago env (mkTestEnv args buildEnv)
662663 runSpago testEnv Test .run
663664 LsPaths args -> do
664- runSpago { logOptions, rootPath } $ Ls .listPaths args
665+ let fetchArgs = { packages: mempty, selectedPackage: Nothing , pure: false , ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
666+ { env } <- mkFetchEnv fetchArgs
667+ runSpago env $ Ls .listPaths args
665668 LsPackages args@{ pure } -> do
666669 let fetchArgs = { packages: mempty, selectedPackage: Nothing , pure, ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
667- { env: env@{ workspace } , fetchOpts } <- mkFetchEnv fetchArgs
670+ { env, fetchOpts } <- mkFetchEnv fetchArgs
668671 dependencies <- runSpago env (Fetch .run fetchOpts)
669- let lsEnv = { workspace, dependencies, logOptions, rootPath }
670- runSpago lsEnv (Ls .listPackageSet args)
672+ runSpago (Record .union env { dependencies }) (Ls .listPackageSet args)
671673 LsDeps { selectedPackage, json, transitive, pure } -> do
672674 let fetchArgs = { packages: mempty, selectedPackage, pure, ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
673675 { env, fetchOpts } <- mkFetchEnv fetchArgs
@@ -690,13 +692,11 @@ main = do
690692 GraphModules args -> do
691693 { env, fetchOpts } <- mkFetchEnv { packages: mempty, selectedPackage: Nothing , pure: false , ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
692694 dependencies <- runSpago env (Fetch .run fetchOpts)
693- purs <- Purs .getPurs
694- runSpago { dependencies, logOptions, rootPath, purs, workspace: env.workspace } (Graph .graphModules args)
695+ runSpago (Record .union env { dependencies }) (Graph .graphModules args)
695696 GraphPackages args -> do
696697 { env, fetchOpts } <- mkFetchEnv { packages: mempty, selectedPackage: Nothing , pure: false , ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
697698 dependencies <- runSpago env (Fetch .run fetchOpts)
698- purs <- Purs .getPurs
699- runSpago { dependencies, logOptions, rootPath, purs, workspace: env.workspace } (Graph .graphPackages args)
699+ runSpago (Record .union env { dependencies }) (Graph .graphPackages args)
700700
701701 Cmd'VersionCmd v -> when v do
702702 output (OutputLines [ BuildInfo .packages." spago-bin" ])
@@ -951,7 +951,14 @@ mkReplEnv replArgs dependencies supportPackage = do
951951 , selected
952952 }
953953
954- mkFetchEnv :: forall a b . { offline :: OnlineStatus , migrateConfig :: Boolean , isRepl :: Boolean | FetchArgsRow b } -> Spago (SpagoBaseEnv a ) { env :: Fetch.FetchEnv (), fetchOpts :: Fetch.FetchOpts }
954+ mkFetchEnv
955+ :: ∀ a b
956+ . { offline :: OnlineStatus
957+ , migrateConfig :: Boolean
958+ , isRepl :: Boolean
959+ | FetchArgsRow b
960+ }
961+ -> Spago { logOptions :: LogOptions | a } { env :: Fetch.FetchEnv (), fetchOpts :: Fetch.FetchOpts }
955962mkFetchEnv args@{ migrateConfig, offline } = do
956963 let
957964 parsePackageName p =
@@ -966,24 +973,26 @@ mkFetchEnv args@{ migrateConfig, offline } = do
966973 Left _err -> die $ " Failed to parse selected package name, was: " <> show args.selectedPackage
967974
968975 env <- mkRegistryEnv offline
969- { rootPath } <- ask
970- workspace <-
971- runSpago (Record .union env { rootPath })
972- (Config .readWorkspace { maybeSelectedPackage, pureBuild: args.pure, migrateConfig })
976+ cwd <- Paths .cwd
977+ { workspace, rootPath } <-
978+ runSpago env
979+ (Config .discoverWorkspace { maybeSelectedPackage, pureBuild: args.pure, migrateConfig } cwd)
980+
981+ FS .mkdirp $ rootPath </> Paths .localCachePath
982+ FS .mkdirp $ rootPath </> Paths .localCachePackagesPath
983+ logDebug $ " Workspace root path: " <> Path .quote rootPath
984+ logDebug $ " Local cache: " <> Paths .localCachePath
985+
973986 let fetchOpts = { packages: packageNames, ensureRanges: args.ensureRanges, isTest: args.testDeps, isRepl: args.isRepl }
974987 pure { fetchOpts, env: Record .union { workspace, rootPath } env }
975988
976989mkRegistryEnv :: forall a . OnlineStatus -> Spago (SpagoBaseEnv a ) (Registry.RegistryEnv ())
977990mkRegistryEnv offline = do
978- { logOptions, rootPath } <- ask
991+ { logOptions } <- ask
979992
980993 -- Take care of the caches
981994 FS .mkdirp Paths .globalCachePath
982- FS .mkdirp $ rootPath </> Paths .localCachePath
983- FS .mkdirp $ rootPath </> Paths .localCachePackagesPath
984- logDebug $ " Workspace root path: " <> Path .quote rootPath
985995 logDebug $ " Global cache: " <> Path .quote Paths .globalCachePath
986- logDebug $ " Local cache: " <> Paths .localCachePath
987996
988997 -- Make sure we have git and purs
989998 git <- Git .getGit
@@ -1004,7 +1013,7 @@ mkRegistryEnv offline = do
10041013 , db
10051014 }
10061015
1007- mkLsEnv :: forall a . Fetch.PackageTransitiveDeps -> Spago (Fetch.FetchEnv a ) Ls.LsEnv
1016+ mkLsEnv :: ∀ a . Fetch.PackageTransitiveDeps -> Spago (Fetch.FetchEnv a ) ( Ls.LsEnv ())
10081017mkLsEnv dependencies = do
10091018 { logOptions, workspace, rootPath } <- ask
10101019 selected <- case workspace.selected of
0 commit comments