Skip to content

Commit 0550957

Browse files
authored
Merge pull request #57 from 2m/wip-classpath-scope-2m
Look for classes in LocalRoot project aggregate by default
2 parents 296cd12 + a3e1d6d commit 0550957

File tree

17 files changed

+73
-18
lines changed

17 files changed

+73
-18
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ jobs:
1111
name: Build code style check (fixed with `sbt scalafmtSbt`)
1212
- stage: test
1313
script: sbt test
14-
name: Tests run
14+
name: Run tests
15+
- script: sbt scripted
16+
name: Run sbt plugin tests
1517
- stage: publish
1618
script: sbt ^publish
1719
name: Publish artifacts

build.sbt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
scalaVersion := "2.12.8"
1+
import scala.collection.JavaConverters._
2+
3+
scalaVersion := "2.12.9"
24

35
sbtPlugin := true
46
crossSbtVersions := List("1.0.0")
@@ -31,3 +33,9 @@ bintrayRepository := "sbt-plugin-releases"
3133

3234
enablePlugins(AutomateHeaderPlugin)
3335
scalafmtOnCompile := true
36+
37+
enablePlugins(SbtPlugin)
38+
scriptedLaunchOpts += ("-Dproject.version=" + version.value)
39+
scriptedLaunchOpts ++= java.lang.management.ManagementFactory.getRuntimeMXBean.getInputArguments.asScala.filter(
40+
a => Seq("-Xmx", "-Xms", "-XX", "-Dfile").exists(a.startsWith)
41+
)

src/main/scala/com/lightbend/paradox/apidoc/ApidocKeys.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,7 @@ package com.lightbend.paradox.apidoc
1919
import sbt._
2020

2121
trait ApidocKeys {
22-
val apidocRootPackage = settingKey[String]("")
22+
val apidocRootPackage = settingKey[String]("Root package for all candidate classes")
23+
val apidocProjects = settingKey[Seq[ProjectReference]]("Projects which will be queried for classes to link to")
24+
val apidocClasses = taskKey[Seq[URL]]("All of the classes that will be queried")
2325
}

src/main/scala/com/lightbend/paradox/apidoc/ApidocPlugin.scala

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,24 @@ object ApidocPlugin extends AutoPlugin {
2929
object autoImport extends ApidocKeys
3030
import autoImport._
3131

32-
val version = ParadoxPlugin.readProperty("akka-paradox.properties", "akka.paradox.version")
33-
34-
override def requires: Plugins = ParadoxPlugin
35-
32+
override def requires: Plugins = ParadoxPlugin
3633
override def trigger: PluginTrigger = AllRequirements
3734

38-
override def projectSettings: Seq[Setting[_]] = apidocSettings(Compile)
35+
override def projectSettings: Seq[Setting[_]] = apidocParadoxZeroSettings
3936

40-
def apidocParadoxGlobalSettings: Seq[Setting[_]] = Seq(
37+
def apidocParadoxZeroSettings: Seq[Setting[_]] = Seq(
4138
apidocRootPackage := "scala",
39+
apidocClasses := Def.taskDyn {
40+
val classpathProjects = apidocProjects.?.value
41+
.map(inProjects)
42+
.getOrElse {
43+
inAggregates(LocalRootProject, includeRoot = true)
44+
}
45+
val filter = ScopeFilter(classpathProjects, inConfigurations(Compile))
46+
fullClasspath.all(filter).map(_.flatMap(_.files).map(_.toURI.toURL))
47+
}.value,
4248
paradoxDirectives ++= Def.taskDyn {
43-
val classpath = (fullClasspath in Compile).value.files.map(_.toURI.toURL).toArray
44-
val classLoader = new java.net.URLClassLoader(classpath, this.getClass.getClassLoader)
49+
val classLoader = new java.net.URLClassLoader(apidocClasses.value.toArray, this.getClass.getClassLoader)
4550
val scanner = new ClassGraph()
4651
.whitelistPackages(apidocRootPackage.value)
4752
.addClassLoader(classLoader)
@@ -56,11 +61,4 @@ object ApidocPlugin extends AutoPlugin {
5661
}
5762
}.value
5863
)
59-
60-
def apidocSettings(config: Configuration): Seq[Setting[_]] =
61-
apidocParadoxGlobalSettings ++ inConfig(config)(
62-
Seq(
63-
// scoped settings here
64-
)
65-
)
6664
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
val lib = project
2+
3+
val docs = project
4+
.enablePlugins(ParadoxPlugin)
5+
.settings(
6+
paradoxTheme := None,
7+
paradoxGroups := Map("Language" -> Seq("Java", "Scala")),
8+
paradoxProperties ++= Map(
9+
"scaladoc.apidoc.base_url" -> "https://localhost:8000",
10+
"javadoc.apidoc.base_url" -> "https://localhost:8000"
11+
),
12+
apidocRootPackage := ""
13+
)
14+
15+
val root = project
16+
.in(file("."))
17+
.aggregate(lib)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$page.content$
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Api link to sub-project @apidoc[LibClass]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p>Api link to sub-project <span class="group-scala"><a href="https://localhost:8000/apidoc/LibClass.html">LibClass</a></span><span class="group-java"><a href="https://localhost:8000/?apidoc/LibClass.html">LibClass</a></span></p>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package apidoc
2+
3+
class LibClass
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.lightbend.paradox" % "sbt-paradox-apidoc" % sys.props("project.version"))
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
> docs/paradox
2+
3+
$ must-mirror docs/target/paradox/site/main/index.html expected/index.html
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
libraryDependencies += "com.typesafe.akka" %% "akka-stream" % "2.5.25"
2+
3+
enablePlugins(ParadoxPlugin)
4+
paradoxTheme := None
5+
paradoxGroups := Map("Language" -> Seq("Java", "Scala"))
6+
paradoxProperties ++= Map(
7+
"scaladoc.akka.base_url" -> "https://doc.akka.io/api/akka/2.5",
8+
"javadoc.akka.base_url" -> "https://doc.akka.io/japi/akka/2.5"
9+
)
10+
11+
apidocRootPackage := "akka"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p>Api link to Akka <span class="group-java"><a href="https://doc.akka.io/japi/akka/2.5/?akka/stream/javadsl/Flow.html">Flow</a></span><span class="group-scala"><a href="https://doc.akka.io/api/akka/2.5/akka/stream/scaladsl/Flow.html">Flow</a></span></p>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.lightbend.paradox" % "sbt-paradox-apidoc" % sys.props("project.version"))
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$page.content$
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Api link to Akka @apidoc[Flow]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
> paradox
2+
3+
$ must-mirror target/paradox/site/main/index.html expected/index.html

0 commit comments

Comments
 (0)