@@ -21,10 +21,12 @@ lazy val sbtPluginFilePath: String =
2121def log (msg : String ) = println(Console .GREEN + msg + Console .RESET )
2222
2323/** Executes shell command, returns false in case of error. */
24- def exec (projectDir : Path , binary : String , arguments : String * ): Int =
24+ def exec (projectDir : Path , binary : String , arguments : Seq [String ], environment : Map [String , String ]): Int =
25+ import collection .JavaConverters ._
2526 val command = binary +: arguments
2627 log(command.mkString(" " ))
2728 val builder = new ProcessBuilder (command : _* ).directory(projectDir.toFile).inheritIO()
29+ builder.environment.putAll(environment.asJava)
2830 val process = builder.start()
2931 val exitCode = process.waitFor()
3032 exitCode
@@ -41,6 +43,7 @@ sealed trait CommunityProject:
4143 val binaryName : String
4244 val runCommandsArgs : List [String ] = Nil
4345 val requiresExperimental : Boolean
46+ val environment : Map [String , String ] = Map .empty
4447
4548 final val projectDir = communitybuildDir.resolve(" community-projects" ).resolve(project)
4649
@@ -55,7 +58,7 @@ sealed trait CommunityProject:
5558 log(s " Publishing $project" )
5659 if publishCommand eq null then
5760 throw RuntimeException (s " Publish command is not specified for $project. Project details: \n $this" )
58- val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ publishCommand): _* )
61+ val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ publishCommand), environment )
5962 if exitCode != 0 then
6063 throw RuntimeException (s " Publish command exited with code $exitCode for project $project. Project details: \n $this" )
6164 published = true
@@ -70,11 +73,11 @@ sealed trait CommunityProject:
7073 log(s " Documenting $project" )
7174 if docCommand eq null then
7275 throw RuntimeException (s " Doc command is not specified for $project. Project details: \n $this" )
73- val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ docCommand): _* )
76+ val exitCode = exec(projectDir, binaryName, (runCommandsArgs :+ docCommand), environment )
7477 if exitCode != 0 then
7578 throw RuntimeException (s " Doc command exited with code $exitCode for project $project. Project details: \n $this" )
7679
77- final def build (): Int = exec(projectDir, binaryName, buildCommands : _* )
80+ final def build (): Int = exec(projectDir, binaryName, buildCommands, environment )
7881
7982 final def buildCommands = runCommandsArgs :+ testCommand
8083
@@ -94,6 +97,7 @@ final case class MillCommunityProject(
9497 // uncomment once mill is released
9598 // if ignoreDocs then null else s"$baseCommand.docJar"
9699 override val runCommandsArgs = List (" -i" , " -D" , s " dottyVersion= $compilerVersion" )
100+ override val environment = Map (" MILL_VERSION" -> " 0.9.6-16-a5da34" )
97101
98102final case class SbtCommunityProject (
99103 project : String ,
0 commit comments