Skip to content

Commit 5df0296

Browse files
authored
Allow the solver to find workspace packages in a monorepo (#1196)
Properly ignore nested workspaces - we were missing the case with a no-package-root-config
1 parent 455d94a commit 5df0296

File tree

8 files changed

+38
-1
lines changed

8 files changed

+38
-1
lines changed

src/Spago/Command/Fetch.purs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,10 @@ getTransitiveDeps workspacePackage = do
454454
RegistrySolverBuild extraPackages -> do
455455
plan <- getTransitiveDepsFromRegistry depsRanges extraPackages
456456
logDebug $ "Got a plan from the Solver: " <> printJson (Internal.Codec.packageMap Version.codec) plan
457-
pure (map RegistryVersion plan)
457+
pure $ plan # Map.mapMaybeWithKey \packageName version -> case Map.lookup packageName extraPackages of
458+
Just p -> Just p
459+
Nothing -> Just $ RegistryVersion version
460+
458461
PackageSetBuild _info set -> getTransitiveDepsFromPackageSet set (Array.fromFoldable $ Map.keys depsRanges)
459462

460463
where
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package:
2+
name: app
3+
dependencies:
4+
- console
5+
- effect
6+
- prelude
7+
- lib
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module App.Main where
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Reading Spago workspace configuration...
2+
3+
✅ Selecting 2 packages to build:
4+
app
5+
lib
6+
7+
Downloading dependencies...
8+
Building...
9+
Src Lib All
10+
Warnings 0 0 0
11+
Errors 0 0 0
12+
13+
✅ Build succeeded.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package:
2+
name: lib
3+
dependencies:
4+
- console
5+
- effect
6+
- prelude
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module Lib.Main where
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
workspace: {}

test/Spago/Build/Polyrepo.purs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ spec = Spec.describe "polyrepo" do
189189
spago [ "build" ] >>= shouldBeSuccess
190190
spago [ "build" ] >>= shouldBeSuccessErr (fixture "monorepo/ignore-nested-workspaces/expected-stderr.txt")
191191

192+
Spec.it "it's possible to reference local packages when using the solver" \{ spago, fixture } -> do
193+
FS.copyTree { src: fixture "monorepo/local-packages-work-with-solver", dst: "." }
194+
spago [ "build" ] >>= shouldBeSuccess
195+
spago [ "build" ] >>= shouldBeSuccessErr (fixture "monorepo/local-packages-work-with-solver/expected-stderr.txt")
196+
192197
Spec.describe "warning censoring and error-promotion" do
193198
let
194199
setupPackageWithUnusedNameWarning packageName deps strict censorShadowedName includeTestCode = do

0 commit comments

Comments
 (0)