11package dotty .communitybuild
22
33import java .nio .file ._
4- import java .io .{PrintWriter , File }
4+ import java .io .{BufferedReader , InputStreamReader , PrintWriter , File }
55import java .nio .charset .StandardCharsets .UTF_8
6+ import scala .collection .Iterator
67
78lazy val communitybuildDir : Path = Paths .get(sys.props(" user.dir" ))
89
@@ -16,14 +17,25 @@ lazy val sbtPluginFilePath: String =
1617 communitybuildDir.resolve(" sbt-dotty-sbt" ).toAbsolutePath().toString()
1718
1819def log (msg : String ) = println(Console .GREEN + msg + Console .RESET )
20+ def error (msg : String ) = println(Console .RED + msg + Console .RESET )
1921
2022/** Executes shell command, returns false in case of error. */
2123def exec (projectDir : Path , binary : String , arguments : String * ): Int =
2224 val command = binary +: arguments
2325 log(command.mkString(" " ))
2426 val builder = new ProcessBuilder (command : _* ).directory(projectDir.toFile).inheritIO()
27+
2528 val process = builder.start()
2629 val exitCode = process.waitFor()
30+ if (exitCode != 0 ) {
31+ val errorStream = process.getErrorStream()
32+ val isReader = new InputStreamReader (process.getErrorStream())
33+ val br = new BufferedReader (isReader)
34+ Iterator .continually(br.readLine()).takeWhile(_ != null ).foreach(error(_))
35+ br.close()
36+ isReader.close()
37+ errorStream.close()
38+ }
2739 exitCode
2840
2941
@@ -660,6 +672,12 @@ object projects:
660672 dependencies = List (scalatest, scalatestplusJunit, scalatestplusScalacheck)
661673 )
662674
675+ lazy val monocle = SbtCommunityProject (
676+ project = " Monocle" ,
677+ sbtTestCommand = " monocleJVM/test" ,
678+ dependencies = List (cats, shapeless, munit, discipline, disciplineMunit)
679+ )
680+
663681end projects
664682
665683def allProjects = List (
@@ -725,6 +743,7 @@ def allProjects = List(
725743 projects.izumiReflect,
726744 projects.perspective,
727745 projects.akka,
746+ projects.monocle,
728747)
729748
730749lazy val projectMap = allProjects.groupBy(_.project)
0 commit comments