diff --git a/src/main/scala/sbtbuildinfo/BuildInfoOption.scala b/src/main/scala/sbtbuildinfo/BuildInfoOption.scala index 31a01c4..7e7129f 100644 --- a/src/main/scala/sbtbuildinfo/BuildInfoOption.scala +++ b/src/main/scala/sbtbuildinfo/BuildInfoOption.scala @@ -9,4 +9,5 @@ object BuildInfoOption { case object ToJson extends BuildInfoOption case class Traits(names: String*) extends BuildInfoOption case object BuildTime extends BuildInfoOption + case object PackagePrivate extends BuildInfoOption } diff --git a/src/main/scala/sbtbuildinfo/BuildInfoRenderer.scala b/src/main/scala/sbtbuildinfo/BuildInfoRenderer.scala index fc7e056..1f8a358 100644 --- a/src/main/scala/sbtbuildinfo/BuildInfoRenderer.scala +++ b/src/main/scala/sbtbuildinfo/BuildInfoRenderer.scala @@ -6,10 +6,12 @@ object BuildInfoRenderer { trait BuildInfoRenderer { + def options: Seq[BuildInfoOption] def fileType: BuildInfoType def extension: String def renderKeys(infoKeysNameAndValues: Seq[BuildInfoResult]): Seq[String] def isSource = fileType == BuildInfoType.Source def isResource = fileType == BuildInfoType.Resource + def isPkgPriv: Boolean = options contains BuildInfoOption.PackagePrivate } diff --git a/src/main/scala/sbtbuildinfo/ScalaCaseClassRenderer.scala b/src/main/scala/sbtbuildinfo/ScalaCaseClassRenderer.scala index da72cba..cf74215 100644 --- a/src/main/scala/sbtbuildinfo/ScalaCaseClassRenderer.scala +++ b/src/main/scala/sbtbuildinfo/ScalaCaseClassRenderer.scala @@ -33,7 +33,7 @@ case class ScalaCaseClassRenderer(options: Seq[BuildInfoOption], pkg: String, ob caseObjectLine(buildInfoResults) private def caseClassDefinitionBegin = List( - s"case class $obj(" + withPkgPriv(s"case class $obj(") ) private def caseClassParameter(r: BuildInfoResult): Seq[String] = { @@ -57,7 +57,7 @@ case class ScalaCaseClassRenderer(options: Seq[BuildInfoOption], pkg: String, ob private def caseClassEnd = List("}") private def caseObjectLine(buildInfoResults: Seq[BuildInfoResult]) = List( - s"case object $obj {", + withPkgPriv(s"case object $obj {"), s" def apply(): $obj = new $obj(${buildInfoResults.map(r => s"\n ${r.identifier} = ${quote(r.value)}").mkString(",")})", s" val get = apply()", s" val value = apply()", diff --git a/src/main/scala/sbtbuildinfo/ScalaCaseObjectRenderer.scala b/src/main/scala/sbtbuildinfo/ScalaCaseObjectRenderer.scala index 6162c08..6cd2c0d 100644 --- a/src/main/scala/sbtbuildinfo/ScalaCaseObjectRenderer.scala +++ b/src/main/scala/sbtbuildinfo/ScalaCaseObjectRenderer.scala @@ -19,7 +19,7 @@ private[sbtbuildinfo] case class ScalaCaseObjectRenderer(options: Seq[BuildInfoO "import scala.Predef._", "", s"/** This object was generated by sbt-buildinfo. */", - s"case object $obj$objTraits {" + withPkgPriv(s"case object $obj$objTraits {") ) def footer = List("}") diff --git a/src/main/scala/sbtbuildinfo/ScalaFinalCaseObjectRenderer.scala b/src/main/scala/sbtbuildinfo/ScalaFinalCaseObjectRenderer.scala index b7d7cf6..72757dc 100644 --- a/src/main/scala/sbtbuildinfo/ScalaFinalCaseObjectRenderer.scala +++ b/src/main/scala/sbtbuildinfo/ScalaFinalCaseObjectRenderer.scala @@ -19,7 +19,7 @@ case class ScalaFinalCaseObjectRenderer(options: Seq[BuildInfoOption], pkg: Stri "import scala.Predef._", "", s"/** This object was generated by sbt-buildinfo. */", - s"case object $obj$objTraits {" + withPkgPriv(s"case object $obj$objTraits {") ) def footer = List("}") diff --git a/src/main/scala/sbtbuildinfo/ScalaRenderer.scala b/src/main/scala/sbtbuildinfo/ScalaRenderer.scala index 2710a8f..00ce71a 100644 --- a/src/main/scala/sbtbuildinfo/ScalaRenderer.scala +++ b/src/main/scala/sbtbuildinfo/ScalaRenderer.scala @@ -1,6 +1,9 @@ package sbtbuildinfo abstract class ScalaRenderer extends BuildInfoRenderer { + + protected def pkg: String + protected def getType(typeExpr: TypeExpression): Option[String] = { def tpeToReturnType(tpe: TypeExpression): Option[String] = tpe match { @@ -62,5 +65,9 @@ abstract class ScalaRenderer extends BuildInfoRenderer { str.replace("\\","\\\\").replace("\n","\\n").replace("\b","\\b").replace("\r","\\r"). replace("\t","\\t").replace("\'","\\'").replace("\f","\\f").replace("\"","\\\"") + protected def withPkgPriv(str: String): String = + if(pkg.nonEmpty && isPkgPriv) + s"private[${pkg.split('.').last}] $str" + else str } diff --git a/src/sbt-test/sbt-buildinfo/options/build.sbt b/src/sbt-test/sbt-buildinfo/options/build.sbt index 18dec6b..1269597 100644 --- a/src/sbt-test/sbt-buildinfo/options/build.sbt +++ b/src/sbt-test/sbt-buildinfo/options/build.sbt @@ -15,7 +15,8 @@ lazy val root = (project in file(".")). BuildInfoOption.ToJson, BuildInfoOption.ToMap, BuildInfoOption.Traits("TestTrait1", "TestTrait2"), - BuildInfoOption.Traits("TestTrait3")), + BuildInfoOption.Traits("TestTrait3"), + BuildInfoOption.PackagePrivate), homepage := Some(url("http://example.com")), licenses := Seq("MIT License" -> url("https://github.com/sbt/sbt-buildinfo/blob/master/LICENSE")), check := { @@ -27,7 +28,7 @@ lazy val root = (project in file(".")). """import scala.Predef._""" :: """""" :: """/** This object was generated by sbt-buildinfo. */""" :: - """case object BuildInfo extends TestTrait1 with TestTrait2 with TestTrait3 {""" :: + """private[hello] case object BuildInfo extends TestTrait1 with TestTrait2 with TestTrait3 {""" :: """ /** The value is "helloworld". */""":: """ val name: String = "helloworld"""" :: """ /** The value is "2.12.7". */""" ::