Skip to content

Commit 7fbd722

Browse files
committed
WIP Replace Seq[String] used for options by mill.api.opt.Opts
1 parent 6d5c781 commit 7fbd722

File tree

46 files changed

+393
-287
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+393
-287
lines changed

contrib/jmh/src/mill/contrib/jmh/JmhModule.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ trait JmhModule extends JavaModule {
7777
def generateBenchmarkSources =
7878
Task {
7979
val dest = Task.ctx().dest
80-
val forkedArgs = forkArgs().toSeq
80+
val forkedArgs = forkArgs().toStringSeq
8181
val sourcesDir = dest / "jmh_sources"
8282
val resourcesDir = dest / "jmh_resources"
8383

contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package mill.contrib.scoverage
22

33
import coursier.Repository
4-
import mill._
5-
import mill.api.{PathRef}
6-
import mill.api.BuildCtx
7-
import mill.api.{Result}
4+
import mill.*
5+
import mill.api.{BuildCtx, PathRef, Result}
6+
import mill.api.opt.*
87
import mill.contrib.scoverage.api.ScoverageReportWorkerApi2.ReportType
98
import mill.util.BuildInfo
109
import mill.javalib.api.JvmWorkerUtil
@@ -168,18 +167,18 @@ trait ScoverageModule extends ScalaModule { outer: ScalaModule =>
168167
Task { outer.scalacPluginMvnDeps() ++ outer.scoveragePluginDeps() }
169168

170169
/** Add the scoverage specific plugin settings (`dataDir`). */
171-
override def scalacOptions: T[Seq[String]] =
170+
override def scalacOptions: T[Opts] =
172171
Task {
173172
val extras =
174173
if (isScala3()) {
175-
Seq(
176-
s"-coverage-out:${data().path.toIO.getPath()}",
177-
s"-sourceroot:${BuildCtx.workspaceRoot}"
174+
Opts(
175+
opt"-coverage-out:${data().path}",
176+
opt"-sourceroot:${BuildCtx.workspaceRoot}"
178177
)
179178
} else {
180-
Seq(
181-
s"-P:scoverage:dataDir:${data().path.toIO.getPath()}",
182-
s"-P:scoverage:sourceRoot:${BuildCtx.workspaceRoot}"
179+
Opts(
180+
opt"-P:scoverage:dataDir:${data().path}",
181+
opt"-P:scoverage:sourceRoot:${BuildCtx.workspaceRoot}"
183182
)
184183
}
185184

core/api/daemon/src/mill/api/daemon/internal/JavaModuleApi.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ trait JavaModuleApi extends ModuleApi with GenIdeaModuleApi {
1313

1414
def transitiveModuleCompileModuleDeps: Seq[JavaModuleApi]
1515

16-
def javacOptions: TaskApi[Seq[String]]
17-
def mandatoryJavacOptions: TaskApi[Seq[String]]
16+
def javacOptions: TaskApi[OptsApi]
17+
def mandatoryJavacOptions: TaskApi[OptsApi]
1818

1919
// BSP Tasks that sometimes need to be customized
2020

core/api/daemon/src/mill/api/daemon/internal/bsp/BspJavaModuleApi.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package mill.api.daemon.internal.bsp
22

3-
import mill.api.daemon.internal.{EvaluatorApi, ModuleApi, TaskApi}
3+
import mill.api.daemon.internal.{EvaluatorApi, ModuleApi, OptApi, OptsApi, TaskApi}
44

55
import java.nio.file.Path
66

@@ -34,21 +34,25 @@ trait BspJavaModuleApi extends ModuleApi {
3434
)
3535
: TaskApi[EvaluatorApi => (
3636
classesPath: Path,
37-
javacOptions: Seq[String],
37+
javacOptions: OptsApi,
3838
classpath: Seq[String]
3939
)]
4040

4141
private[mill] def bspBuildTargetScalacOptions(
4242
needsToMergeResourcesIntoCompileDest: Boolean,
4343
enableJvmCompileClasspathProvider: Boolean,
4444
clientWantsSemanticDb: Boolean
45-
): TaskApi[(Seq[String], EvaluatorApi => Seq[String], EvaluatorApi => java.nio.file.Path)]
45+
): TaskApi[(
46+
scalacOptionsTask: OptsApi,
47+
compileClasspathTask: EvaluatorApi => Seq[String],
48+
classPathTask: EvaluatorApi => java.nio.file.Path
49+
)]
4650

4751
private[mill] def bspBuildTargetScalaMainClasses
4852
: TaskApi[(
4953
classes: Seq[String],
50-
forkArgs: Seq[String],
51-
forkEnv: Map[String, String]
54+
forkArgs: OptsApi,
55+
forkEnv: Map[String, OptApi]
5256
)]
5357

5458
private[mill] def bspLoggingTest: TaskApi[Unit]

core/api/daemon/src/mill/api/daemon/internal/bsp/BspRunModuleApi.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package mill.api.daemon.internal.bsp
22

3-
import mill.api.daemon.internal.{ModuleApi, TaskApi}
3+
import mill.api.daemon.internal.{ModuleApi, OptApi, OptsApi, TaskApi}
44

55
import java.nio.file.Path
66

@@ -10,18 +10,18 @@ trait BspRunModuleApi extends ModuleApi {
1010

1111
private[mill] def bspJvmRunEnvironment: TaskApi[(
1212
runClasspath: Seq[Path],
13-
forkArgs: Seq[String],
13+
forkArgs: OptsApi,
1414
forkWorkingDir: Path,
15-
forkEnv: Map[String, String],
15+
forkEnv: Map[String, OptApi],
1616
mainClass: Option[String],
1717
localMainClasses: Seq[String]
1818
)]
1919

2020
private[mill] def bspJvmTestEnvironment: TaskApi[(
2121
runClasspath: Seq[Path],
22-
forkArgs: Seq[String],
22+
forkArgs: OptsApi,
2323
forkWorkingDir: Path,
24-
forkEnv: Map[String, String],
24+
forkEnv: Map[String, OptApi],
2525
mainClass: Option[String],
2626
testEnvVars: Option[(
2727
mainClass: String,

libs/androidlib/src/mill/androidlib/AndroidAppKotlinModule.scala

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package mill.androidlib
22

33
import coursier.params.ResolutionParams
44
import mill.api.{ModuleRef, PathRef, Task}
5+
import mill.api.opt.*
56
import mill.kotlinlib.{Dep, DepSyntax}
67
import mill.javalib.TestModule.Junit5
78
import mill.javalib.{JavaModule, TestModule}
@@ -293,7 +294,7 @@ trait AndroidAppKotlinModule extends AndroidKotlinModule, AndroidAppModule { out
293294
PathRef(diffImageDir)
294295
}
295296

296-
override def forkArgs: T[Seq[String]] = super.forkArgs() ++ testJvmArgs()
297+
override def forkArgs: T[Opts] = super.forkArgs() ++ testJvmArgs()
297298
override def runClasspath: T[Seq[PathRef]] =
298299
super.runClasspath() ++ androidPreviewScreenshotTestEngineClasspath() ++ compileClasspath()
299300

@@ -315,18 +316,18 @@ trait AndroidAppKotlinModule extends AndroidKotlinModule, AndroidAppModule { out
315316
As defined in
316317
[[https://android.googlesource.com/platform/tools/base/+/61923408e5f7dc20f0840844597f9dde17453a0f/preview/screenshot/screenshot-test-gradle-plugin/src/main/java/com/android/compose/screenshot/tasks/PreviewScreenshotValidationTask.kt?#84]]
317318
*/
318-
private def testJvmArgs: T[Seq[String]] = Task {
319+
private def testJvmArgs: T[Opts] = Task {
319320
val params = Map(
320-
"previews-discovered" -> androidDiscoveredPreviews().previewsDiscoveredJsonFile.path.toString(),
321-
"referenceImageDirPath" -> screenshotResults().path.toString(),
322-
"diffImageDirPath" -> diffImageDirPath().path.toString,
323-
"renderResultsFilePath" -> androidScreenshotGeneratedResults().path.toString,
324-
"renderTaskOutputDir" -> screenshotResults().path.toString(),
325-
"resultsDirPath" -> androidScreenshotTestResultDir().path.toString(),
321+
"previews-discovered" -> androidDiscoveredPreviews().previewsDiscoveredJsonFile.path,
322+
"referenceImageDirPath" -> screenshotResults().path,
323+
"diffImageDirPath" -> diffImageDirPath().path,
324+
"renderResultsFilePath" -> androidScreenshotGeneratedResults().path,
325+
"renderTaskOutputDir" -> screenshotResults().path,
326+
"resultsDirPath" -> androidScreenshotTestResultDir().path,
326327
"threshold" -> androidScreenshotTestDiffThreshold.toString
327328
)
328329

329-
params.map { case (k, v) => s"$JvmTestArg$k=$v" }.toSeq
330+
Opts(params.map { case (k, v) => opt"$JvmTestArg$k=$v" })
330331
}
331332

332333
private val JvmTestArg = "-Dcom.android.tools.preview.screenshot.junit.engine."

libs/androidlib/src/mill/androidlib/AndroidKotlinModule.scala

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ package mill.androidlib
22

33
import mill.*
44
import mill.api.{ModuleRef, PathRef, Result}
5+
import mill.api.opt.*
56
import mill.javalib.{CoursierModule, Dep}
6-
import mill.kotlinlib.{Dep, DepSyntax, KotlinModule}
7+
import mill.kotlinlib.{Dep, DepSyntax, KotlinModule, KotlincOptions}
78
import mill.{T, Task}
8-
import mill.androidlib.databinding.{
9-
AndroidDataBindingWorker,
10-
GenerateBindingSourcesArgs,
11-
ProcessResourcesArgs,
12-
AndroidDataBindingWorkerModule
13-
}
9+
import mill.androidlib.databinding.{AndroidDataBindingWorker, AndroidDataBindingWorkerModule, GenerateBindingSourcesArgs, ProcessResourcesArgs}
1410
import mill.util.Jvm
1511

1612
// TODO expose Compose configuration options
@@ -185,21 +181,26 @@ trait AndroidKotlinModule extends KotlinModule with AndroidModule { outer =>
185181
* If this module has any module dependencies, we need to tell the kotlin compiler to
186182
* handle the compiled output as a friend path so top level declarations are visible.
187183
*/
188-
def kotlincFriendPaths: T[Option[String]] = Task {
184+
def kotlincFriendPaths: T[Opts] = Task {
189185
val compiledCodePaths = Task.traverse(transitiveModuleCompileModuleDeps)(m =>
190186
Task.Anon {
191187
Seq(m.compile().classes.path)
192188
}
193189
)().flatten
194190

195-
val friendlyPathFlag: Option[String] =
196-
compiledCodePaths.headOption.map(_ => s"-Xfriend-paths=${compiledCodePaths.mkString(",")}")
197-
198-
friendlyPathFlag
191+
Opts(
192+
OptGroup.when(compiledCodePaths.nonEmpty)(
193+
Opt.mkPath(
194+
compiledCodePaths,
195+
prefix = KotlincOptions.`-Xfriend-paths`,
196+
sep = KotlincOptions.friendPathSeparator
197+
)
198+
)
199+
)
199200
}
200201

201-
override def kotlincOptions: T[Seq[String]] = Task {
202-
super.kotlincOptions() ++ kotlincFriendPaths().toSeq
202+
override def kotlincOptions: T[Opts] = Task {
203+
super.kotlincOptions() ++ kotlincFriendPaths()
203204
}
204205

205206
def kspDependencyResolver: Task[CoursierModule.Resolver] = Task.Anon {

libs/androidlib/src/mill/androidlib/AndroidModule.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ trait AndroidModule extends JavaModule { outer =>
516516
* The Java compiled classes of [[androidResources]]
517517
*/
518518
def androidCompiledRClasses: T[CompilationResult] = Task(persistent = true) {
519-
val jOpts = JavaCompilerOptions.split(javacOptions() ++ mandatoryJavacOptions())
519+
val jOpts = JavaCompilerOptions.split(javacOptions().toStringSeq ++ mandatoryJavacOptions().toStringSeq)
520520
val worker = jvmWorker().internalWorker()
521521
worker.apply(
522522
ZincCompileJava(
@@ -728,7 +728,7 @@ trait AndroidModule extends JavaModule { outer =>
728728

729729
val rJar = Task.dest / "R.jar"
730730

731-
val jOpts = JavaCompilerOptions.split(javacOptions() ++ mandatoryJavacOptions())
731+
val jOpts = JavaCompilerOptions.split(javacOptions().toStringSeq ++ mandatoryJavacOptions().toStringSeq)
732732
val worker = jvmWorker().internalWorker()
733733
val classesDest = worker
734734
.apply(

libs/androidlib/src/mill/androidlib/hilt/AndroidHiltSupport.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mill.androidlib.hilt
22

33
import mill.androidlib.AndroidKotlinModule
4+
import mill.api.opt.*
45
import mill.api.{ModuleRef, PathRef}
56
import mill.kotlinlib.ksp.KspModule
67
import mill.javalib.Dep
@@ -24,12 +25,12 @@ import mill.{T, Task}
2425
@mill.api.experimental
2526
trait AndroidHiltSupport extends KspModule, AndroidKotlinModule {
2627

27-
override def kspProcessorOptions: T[Map[String, String]] = Task {
28+
override def kspProcessorOptions: T[Map[String, Opt]] = Task {
2829
super.kspProcessorOptions() ++ Map(
29-
"dagger.fastInit" -> "enabled",
30-
"dagger.hilt.android.internal.disableAndroidSuperclassValidation" -> "true",
31-
"dagger.hilt.android.internal.projectType" -> "APP",
32-
"dagger.hilt.internal.useAggregatingRootProcessor" -> "true"
30+
"dagger.fastInit" -> opt"enabled",
31+
"dagger.hilt.android.internal.disableAndroidSuperclassValidation" -> opt"true",
32+
"dagger.hilt.android.internal.projectType" -> opt"APP",
33+
"dagger.hilt.internal.useAggregatingRootProcessor" -> opt"true"
3334
)
3435
}
3536

libs/javalib/src/mill/javalib/AssemblyModule.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import mill.api.PathRef
44
import mill.api.Result
55
import mill.util.JarManifest
66
import mill.api.*
7+
import mill.api.opt.*
78
import mill.api.Task.Simple as T
89
import mill.javalib.Assembly.UnopenedInputStream
910
import mill.util.Jvm
@@ -16,17 +17,17 @@ trait AssemblyModule extends mill.api.Module {
1617

1718
def finalMainClassOpt: T[Either[String, String]]
1819

19-
def forkArgs: T[Seq[String]]
20+
def forkArgs: T[Opts]
2021

2122
/**
2223
* Similar to `forkArgs` but only applies to the `sh` launcher script
2324
*/
24-
def forkShellArgs: T[Seq[String]] = Task { Seq.empty[String] }
25+
def forkShellArgs: T[Opts] = Task { Opts() }
2526

2627
/**
2728
* Similar to `forkArgs` but only applies to the `bat` launcher script
2829
*/
29-
def forkCmdArgs: T[Seq[String]] = Task { Seq.empty[String] }
30+
def forkCmdArgs: T[Opts] = Task { Opts() }
3031

3132
/**
3233
* Creates a manifest representation which can be modified or replaced
@@ -54,10 +55,10 @@ trait AssemblyModule extends mill.api.Module {
5455
mainClass = cls,
5556
shellClassPath = Seq("$0"),
5657
cmdClassPath = Seq("%~dpnx0"),
57-
jvmArgs = forkArgs(),
58+
jvmArgs = forkArgs().toStringSeq,
5859
shebang = false,
59-
shellJvmArgs = forkShellArgs(),
60-
cmdJvmArgs = forkCmdArgs()
60+
shellJvmArgs = forkShellArgs().toStringSeq,
61+
cmdJvmArgs = forkCmdArgs().toStringSeq
6162
)
6263
}
6364
}

0 commit comments

Comments
 (0)