From f8280f14c894e4f981427249ec6220168a7b70f9 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 3 Nov 2024 14:42:10 -0500 Subject: [PATCH] Fix ++ with a command argument **Problem** sbt 1.10.0 added support for ++ command with external reference, but broke ++ takes an aggregate command with slash. **Solution** This fixes the parser --- main/src/main/scala/sbt/Cross.scala | 5 ++++- sbt-app/src/sbt-test/actions/cross-multiproject/test | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/Cross.scala b/main/src/main/scala/sbt/Cross.scala index 6dc8dffd3..5fb67a667 100644 --- a/main/src/main/scala/sbt/Cross.scala +++ b/main/src/main/scala/sbt/Cross.scala @@ -122,7 +122,10 @@ object Cross { .map { case uri ~ seg1 ~ cmd => (uri, seg1, cmd) } Parser.parse(command, parser) match { case Right((uri, seg1, cmd)) => - structure.allProjectRefs.find(p => uri.contains(p.build.toString) && seg1 == p.project) match { + structure.allProjectRefs.find { + case p if uri.isDefined => seg1 == p.project && uri.contains(p.build.toString) + case p => seg1 == p.project + } match { case Some(proj) => (Seq(proj), cmd) case _ => (resolveAggregates(extracted), command) } diff --git a/sbt-app/src/sbt-test/actions/cross-multiproject/test b/sbt-app/src/sbt-test/actions/cross-multiproject/test index bef1a492f..03a96cb83 100644 --- a/sbt-app/src/sbt-test/actions/cross-multiproject/test +++ b/sbt-app/src/sbt-test/actions/cross-multiproject/test @@ -21,6 +21,12 @@ $ exists sbt-foo/target/scala-2.12 $ exists ref/target/scala-2.12 -$ exists ref/target/scala-2.13 +# test safe switching +> clean +> ++ 2.12.20 -v libProj/compile +$ exists lib/target/scala-2.12 +-$ exists lib/target/scala-2.13 + # Test legacy cross build with command support # > clean # > + build