@@ -536,8 +536,7 @@ main = do
536
536
\c -> Aff .launchAff_ case c of
537
537
Cmd'SpagoCmd (SpagoCmd globalArgs@{ offline, migrateConfig } command) -> do
538
538
logOptions <- mkLogOptions startingTime globalArgs
539
- rootPath <- Path .mkRoot =<< Paths .cwd
540
- runSpago { logOptions, rootPath } case command of
539
+ runSpago { logOptions } case command of
541
540
Sources args -> do
542
541
{ env } <- mkFetchEnv
543
542
{ packages: mempty
@@ -552,6 +551,7 @@ main = do
552
551
void $ runSpago env (Sources .run { json: args.json })
553
552
Init args@{ useSolver } -> do
554
553
-- Fetch the registry here so we can select the right package set later
554
+ rootPath <- Path .mkRoot =<< Paths .cwd
555
555
env <- mkRegistryEnv offline <#> Record .union { rootPath }
556
556
setVersion <- parseSetVersion args.setVersion
557
557
void $ runSpago env $ Init .run { mode: args.mode, setVersion, useSolver }
@@ -599,7 +599,8 @@ main = do
599
599
void $ runSpago publishEnv (Publish .publish {})
600
600
601
601
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
603
604
true -> do
604
605
-- if we have a config then we assume it's a workspace, and we can run a repl in the project
605
606
pure mempty -- TODO newPackages
@@ -661,13 +662,14 @@ main = do
661
662
testEnv <- runSpago env (mkTestEnv args buildEnv)
662
663
runSpago testEnv Test .run
663
664
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
665
668
LsPackages args@{ pure } -> do
666
669
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
668
671
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)
671
673
LsDeps { selectedPackage, json, transitive, pure } -> do
672
674
let fetchArgs = { packages: mempty, selectedPackage, pure, ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
673
675
{ env, fetchOpts } <- mkFetchEnv fetchArgs
@@ -690,13 +692,11 @@ main = do
690
692
GraphModules args -> do
691
693
{ env, fetchOpts } <- mkFetchEnv { packages: mempty, selectedPackage: Nothing , pure: false , ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
692
694
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)
695
696
GraphPackages args -> do
696
697
{ env, fetchOpts } <- mkFetchEnv { packages: mempty, selectedPackage: Nothing , pure: false , ensureRanges: false , testDeps: false , isRepl: false , migrateConfig, offline }
697
698
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)
700
700
701
701
Cmd'VersionCmd v -> when v do
702
702
output (OutputLines [ BuildInfo .packages." spago-bin" ])
@@ -951,7 +951,14 @@ mkReplEnv replArgs dependencies supportPackage = do
951
951
, selected
952
952
}
953
953
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 }
955
962
mkFetchEnv args@{ migrateConfig, offline } = do
956
963
let
957
964
parsePackageName p =
@@ -966,24 +973,26 @@ mkFetchEnv args@{ migrateConfig, offline } = do
966
973
Left _err -> die $ " Failed to parse selected package name, was: " <> show args.selectedPackage
967
974
968
975
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
+
973
986
let fetchOpts = { packages: packageNames, ensureRanges: args.ensureRanges, isTest: args.testDeps, isRepl: args.isRepl }
974
987
pure { fetchOpts, env: Record .union { workspace, rootPath } env }
975
988
976
989
mkRegistryEnv :: forall a . OnlineStatus -> Spago (SpagoBaseEnv a ) (Registry.RegistryEnv ())
977
990
mkRegistryEnv offline = do
978
- { logOptions, rootPath } <- ask
991
+ { logOptions } <- ask
979
992
980
993
-- Take care of the caches
981
994
FS .mkdirp Paths .globalCachePath
982
- FS .mkdirp $ rootPath </> Paths .localCachePath
983
- FS .mkdirp $ rootPath </> Paths .localCachePackagesPath
984
- logDebug $ " Workspace root path: " <> Path .quote rootPath
985
995
logDebug $ " Global cache: " <> Path .quote Paths .globalCachePath
986
- logDebug $ " Local cache: " <> Paths .localCachePath
987
996
988
997
-- Make sure we have git and purs
989
998
git <- Git .getGit
@@ -1004,7 +1013,7 @@ mkRegistryEnv offline = do
1004
1013
, db
1005
1014
}
1006
1015
1007
- mkLsEnv :: forall a . Fetch.PackageTransitiveDeps -> Spago (Fetch.FetchEnv a ) Ls.LsEnv
1016
+ mkLsEnv :: ∀ a . Fetch.PackageTransitiveDeps -> Spago (Fetch.FetchEnv a ) ( Ls.LsEnv ())
1008
1017
mkLsEnv dependencies = do
1009
1018
{ logOptions, workspace, rootPath } <- ask
1010
1019
selected <- case workspace.selected of
0 commit comments