From d7ec0e889551e49c373f03ed0fe5b7db56037765 Mon Sep 17 00:00:00 2001 From: Enno Runne <458526+ennru@users.noreply.github.com> Date: Tue, 5 Mar 2019 11:37:22 +0100 Subject: [PATCH] Put projectInfoVersion in Global scope --- .../ParadoxProjectInfoPlugin.scala | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/src/main/scala/com/lightbend/paradox/projectinfo/ParadoxProjectInfoPlugin.scala b/src/main/scala/com/lightbend/paradox/projectinfo/ParadoxProjectInfoPlugin.scala index 8e4fc6e..36de4b5 100644 --- a/src/main/scala/com/lightbend/paradox/projectinfo/ParadoxProjectInfoPlugin.scala +++ b/src/main/scala/com/lightbend/paradox/projectinfo/ParadoxProjectInfoPlugin.scala @@ -34,53 +34,54 @@ object ParadoxProjectInfoPlugin extends AutoPlugin { override def projectSettings: Seq[Setting[_]] = projectInfoSettings(Compile) - def projectInfoGlobalSettings: Seq[Setting[_]] = Seq( + override def globalSettings: Seq[Setting[_]] = Seq( projectInfoVersion := version.value, - paradoxDirectives ++= Def.taskDyn { - Def.task { - val s = state.value - Seq( - { - _: Writer.Context ⇒ - val f = new File((LocalRootProject / baseDirectory).value, "project/project-info.conf") - if (f.exists()) { - val extracted = Project.extract(s) - val rootVersion = extracted.get(projectInfoVersion) - val config = ConfigFactory - .parseFile(f) - // inject into config before resolving - .withValue("project-info.version", ConfigValueFactory.fromAnyRef(rootVersion)) - .resolve() - .getConfig("project-info") - val sbtDetails: String => SbtValues = projectId => { - val project = LocalProject(projectId) - val projectName = try { extracted.get(project / name) } catch { - case e: Exception => - throw new RuntimeException( - s"couldn't read sbt setting `$projectId / name`, does the projectId exist?") - } - SbtValues( - projectName, - extracted.get(project / version), - extracted.get(project / organization), - extracted.get(project / homepage), - extracted.get(project / scmInfo), - extracted.get(project / licenses).toList, - extracted.get(project / crossScalaVersions).toList, - ) - } - new ProjectInfoDirective(config, sbtDetails) - } else { - throw new Error(s"Could not retrieve project-info from ${f.absolutePath}") - } - } - ) - } - }.value ) def projectInfoSettings(config: Configuration): Seq[Setting[_]] = - projectInfoGlobalSettings ++ inConfig(config)( + Seq( + paradoxDirectives ++= Def.taskDyn { + Def.task { + val s = state.value + Seq( + { + _: Writer.Context ⇒ + val f = new File((LocalRootProject / baseDirectory).value, "project/project-info.conf") + if (f.exists()) { + val extracted = Project.extract(s) + val rootVersion = extracted.get(projectInfoVersion) + val config = ConfigFactory + .parseFile(f) + // inject into config before resolving + .withValue("project-info.version", ConfigValueFactory.fromAnyRef(rootVersion)) + .resolve() + .getConfig("project-info") + val sbtDetails: String => SbtValues = projectId => { + val project = LocalProject(projectId) + val projectName = try { extracted.get(project / name) } catch { + case e: Exception => + throw new RuntimeException( + s"couldn't read sbt setting `$projectId / name`, does the projectId exist?") + } + SbtValues( + projectName, + extracted.get(project / version), + extracted.get(project / organization), + extracted.get(project / homepage), + extracted.get(project / scmInfo), + extracted.get(project / licenses).toList, + extracted.get(project / crossScalaVersions).toList, + ) + } + new ProjectInfoDirective(config, sbtDetails) + } else { + throw new Error(s"Could not retrieve project-info from ${f.absolutePath}") + } + } + ) + } + }.value + ) ++ inConfig(config)( Seq( // scoped settings here ))