From 8b8370d1183b17a31ed2f7b6462cfe9193cb9f7b Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 11:49:01 +0800 Subject: [PATCH 1/4] . --- contrib/errorprone/readme.adoc | 2 +- example/depth/large/13-helper-files-mill-sc/build.mill.sc | 6 +++--- main/client/src/mill/main/client/CodeGenConstants.java | 6 +++--- mill-build/src/ExampleParser.scala | 2 +- runner/src/mill/runner/FileImportGraph.scala | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contrib/errorprone/readme.adoc b/contrib/errorprone/readme.adoc index af67982b5d3..159b045051a 100644 --- a/contrib/errorprone/readme.adoc +++ b/contrib/errorprone/readme.adoc @@ -5,7 +5,7 @@ https://errorprone.info/index[Error Prone] augments the Java compiler's type che You just need to mix the `ErrorProneModule` into your `JavaModule` and it will automatically run with every compilation. -.`build.mill.sc`: Enable `ErrorProne` in a module +.`build.mill.scala`: Enable `ErrorProne` in a module [source,scala] ---- package build diff --git a/example/depth/large/13-helper-files-mill-sc/build.mill.sc b/example/depth/large/13-helper-files-mill-sc/build.mill.sc index 7a757d7b0ba..0a0b47444fa 100644 --- a/example/depth/large/13-helper-files-mill-sc/build.mill.sc +++ b/example/depth/large/13-helper-files-mill-sc/build.mill.sc @@ -8,9 +8,9 @@ object `package` extends RootModule with MyModule{ "MY_PROJECT_VERSION" -> versions.myProjectVersion, ) } -///** See Also: util.mill.sc */ -///** See Also: foo/package.mill.sc */ -///** See Also: foo/versions.mill.sc */ +///** See Also: util.mill.scala */ +///** See Also: foo/package.mill.scala */ +///** See Also: foo/versions.mill.scala */ // Apart from having `package` files in subfolders to define modules, Mill diff --git a/main/client/src/mill/main/client/CodeGenConstants.java b/main/client/src/mill/main/client/CodeGenConstants.java index 71136e2d1dd..5a5f1b55733 100644 --- a/main/client/src/mill/main/client/CodeGenConstants.java +++ b/main/client/src/mill/main/client/CodeGenConstants.java @@ -21,17 +21,17 @@ public class CodeGenConstants { /** * The name of the root build file */ - final public static String[] rootBuildFileNames = {"build.mill", "build.mill.sc", "build.sc"}; + final public static String[] rootBuildFileNames = {"build.mill", "build.mill.scala", "build.sc"}; /** * The name of any sub-folder build files */ - final public static String[] nestedBuildFileNames = {"package.mill", "package.mill.sc", "package.sc"}; + final public static String[] nestedBuildFileNames = {"package.mill", "package.mill.scala", "package.sc"}; /** * The extensions used by build files */ - final public static String[] buildFileExtensions = {"mill", "mill.sc", "sc"}; + final public static String[] buildFileExtensions = {"mill", "mill.scala", "sc"}; /** * The user-facing name for the root of the module tree. diff --git a/mill-build/src/ExampleParser.scala b/mill-build/src/ExampleParser.scala index 39988ee2a86..307e3fc3f72 100644 --- a/mill-build/src/ExampleParser.scala +++ b/mill-build/src/ExampleParser.scala @@ -6,7 +6,7 @@ object ExampleParser { val states = collection.mutable.Buffer("scala") val chunks = collection.mutable.Buffer(collection.mutable.Buffer.empty[String]) - val rootBuildFileNames = Seq("build.sc", "build.mill", "build.mill.sc") + val rootBuildFileNames = Seq("build.sc", "build.mill", "build.mill.scala") val buildFile = rootBuildFileNames.map(testRepoRoot / _).find(os.exists) for (line <- os.read.lines(buildFile.get)) { val (newState, restOpt) = line match { diff --git a/runner/src/mill/runner/FileImportGraph.scala b/runner/src/mill/runner/FileImportGraph.scala index fae30b35174..ed8f8ce0271 100644 --- a/runner/src/mill/runner/FileImportGraph.scala +++ b/runner/src/mill/runner/FileImportGraph.scala @@ -66,7 +66,7 @@ object FileImportGraph { val expectedImportSegments = expectedImportSegments0.map(backtickWrap).mkString(".") if ( // Legacy `.sc` files have their package build be optional - (s.last.endsWith(".mill") || s.last.endsWith(".mill.sc")) && + (s.last.endsWith(".mill") || s.last.endsWith(".mill.scala")) && expectedImportSegments != importSegments && // Root build.mill file has its `package build` be optional !(importSegments == "" && rootBuildFileNames.contains(s.last)) @@ -136,7 +136,7 @@ object FileImportGraph { case ImportTree(Seq(("$file", end0), rest @ _*), mapping, start, end) => // Only recursively explore imports from legacy `.sc` files, as new `.mill` files // do file discovery via scanning folders containing `package.mill` files - if (s.last.endsWith(".sc") && !s.last.endsWith(".mill.sc")) { + if (s.last.endsWith(".sc") && !s.last.endsWith(".mill.scala")) { val nextPaths = mapping.map { case (lhs, rhs) => nextPathFor(s, rest.map(_._1) :+ lhs) } From f9dd5626dd64f2a012065213cb4727d47df046b2 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 12:03:13 +0800 Subject: [PATCH 2/4] Rename build.mill.sc to build.mill.scala --- .../13-helper-files-mill-sc/{build.mill.sc => build.mill.scala} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename example/depth/large/13-helper-files-mill-sc/{build.mill.sc => build.mill.scala} (100%) diff --git a/example/depth/large/13-helper-files-mill-sc/build.mill.sc b/example/depth/large/13-helper-files-mill-sc/build.mill.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/build.mill.sc rename to example/depth/large/13-helper-files-mill-sc/build.mill.scala From 497d199bf16e709c3596ac262ebe5f204bf88e39 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 12:26:10 +0800 Subject: [PATCH 3/4] . --- .../build.mill.scala} | 0 .../foo/package.mill.scala} | 0 .../foo/src/Foo.scala | 0 .../foo/versions.mill.scala} | 0 .../src/Main.scala | 0 .../util.mill.scala} | 0 mill-build/src/ExampleParser.scala | 10 ++++++++-- 7 files changed, 8 insertions(+), 2 deletions(-) rename example/depth/large/{13-helper-files-mill-sc/build.mill.sc => 13-helper-files-mill-scala/build.mill.scala} (100%) rename example/depth/large/{13-helper-files-mill-sc/foo/package.mill.sc => 13-helper-files-mill-scala/foo/package.mill.scala} (100%) rename example/depth/large/{13-helper-files-mill-sc => 13-helper-files-mill-scala}/foo/src/Foo.scala (100%) rename example/depth/large/{13-helper-files-mill-sc/foo/versions.mill.sc => 13-helper-files-mill-scala/foo/versions.mill.scala} (100%) rename example/depth/large/{13-helper-files-mill-sc => 13-helper-files-mill-scala}/src/Main.scala (100%) rename example/depth/large/{13-helper-files-mill-sc/util.mill.sc => 13-helper-files-mill-scala/util.mill.scala} (100%) diff --git a/example/depth/large/13-helper-files-mill-sc/build.mill.sc b/example/depth/large/13-helper-files-mill-scala/build.mill.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/build.mill.sc rename to example/depth/large/13-helper-files-mill-scala/build.mill.scala diff --git a/example/depth/large/13-helper-files-mill-sc/foo/package.mill.sc b/example/depth/large/13-helper-files-mill-scala/foo/package.mill.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/foo/package.mill.sc rename to example/depth/large/13-helper-files-mill-scala/foo/package.mill.scala diff --git a/example/depth/large/13-helper-files-mill-sc/foo/src/Foo.scala b/example/depth/large/13-helper-files-mill-scala/foo/src/Foo.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/foo/src/Foo.scala rename to example/depth/large/13-helper-files-mill-scala/foo/src/Foo.scala diff --git a/example/depth/large/13-helper-files-mill-sc/foo/versions.mill.sc b/example/depth/large/13-helper-files-mill-scala/foo/versions.mill.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/foo/versions.mill.sc rename to example/depth/large/13-helper-files-mill-scala/foo/versions.mill.scala diff --git a/example/depth/large/13-helper-files-mill-sc/src/Main.scala b/example/depth/large/13-helper-files-mill-scala/src/Main.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/src/Main.scala rename to example/depth/large/13-helper-files-mill-scala/src/Main.scala diff --git a/example/depth/large/13-helper-files-mill-sc/util.mill.sc b/example/depth/large/13-helper-files-mill-scala/util.mill.scala similarity index 100% rename from example/depth/large/13-helper-files-mill-sc/util.mill.sc rename to example/depth/large/13-helper-files-mill-scala/util.mill.scala diff --git a/mill-build/src/ExampleParser.scala b/mill-build/src/ExampleParser.scala index 307e3fc3f72..de7b82c7cd8 100644 --- a/mill-build/src/ExampleParser.scala +++ b/mill-build/src/ExampleParser.scala @@ -7,8 +7,14 @@ object ExampleParser { val chunks = collection.mutable.Buffer(collection.mutable.Buffer.empty[String]) val rootBuildFileNames = Seq("build.sc", "build.mill", "build.mill.scala") - val buildFile = rootBuildFileNames.map(testRepoRoot / _).find(os.exists) - for (line <- os.read.lines(buildFile.get)) { + val buildFile = rootBuildFileNames.map(testRepoRoot / _) + .find(os.exists) + .getOrElse( + sys.error( + s"No build file named ${rootBuildFileNames.mkString("/")} found in $testRepoRoot" + ) + ) + for (line <- os.read.lines(buildFile)) { val (newState, restOpt) = line match { case s"/** Usage" => ("example", None) case s"/** See Also: $path */" => From 3b60c7f5760b44732a0fbae7b1a7062a933360a0 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 12 Sep 2024 17:48:42 +0800 Subject: [PATCH 4/4] . --- runner/src/mill/runner/FileImportGraph.scala | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/runner/src/mill/runner/FileImportGraph.scala b/runner/src/mill/runner/FileImportGraph.scala index ed8f8ce0271..b589c2bfabf 100644 --- a/runner/src/mill/runner/FileImportGraph.scala +++ b/runner/src/mill/runner/FileImportGraph.scala @@ -161,10 +161,18 @@ object FileImportGraph { } val rootBuildFiles = rootBuildFileNames - .find(rootBuildFileName => os.exists(projectRoot / rootBuildFileName)) - - val useDummy = rootBuildFiles.isEmpty - val foundRootBuildFileName: String = rootBuildFiles.getOrElse(rootBuildFileNames.head) + .filter(rootBuildFileName => os.exists(projectRoot / rootBuildFileName)) + + val (useDummy, foundRootBuildFileName) = rootBuildFiles.toSeq match { + case Nil => (true, rootBuildFileNames.head) + case Seq(single) => (false, single) + case multiple => + System.err.println( + "Multiple root build files found: " + multiple.mkString(",") + + ", picking " + multiple.head + ) + (false, multiple.head) + } val buildFileExtension = buildFileExtensions.find(ex => foundRootBuildFileName.endsWith(s".$ex")).get