diff --git a/akka-docs/_sphinx/themes/akka/layout.html b/akka-docs/_sphinx/themes/akka/layout.html
index 6f975aad81..5abad17ee3 100644
--- a/akka-docs/_sphinx/themes/akka/layout.html
+++ b/akka-docs/_sphinx/themes/akka/layout.html
@@ -21,6 +21,23 @@
{% block relbar1 %}{% endblock %}
{% block relbar2 %}{% endblock %}
+{% block extrahead %}
+ {%- if include_analytics %}
+
+
+ {%- endif %}
+{% endblock %}
+
{% block content %}
{%- block akkaheader %}
diff --git a/akka-docs/conf.py b/akka-docs/conf.py
index 044ee21b32..2e66d8b56c 100644
--- a/akka-docs/conf.py
+++ b/akka-docs/conf.py
@@ -48,6 +48,10 @@ html_show_copyright = True
htmlhelp_basename = 'Akkadoc'
html_add_permalinks = ''
+html_context = {
+ 'include_analytics': 'online' in tags
+}
+
# -- Options for LaTeX output --------------------------------------------------
def setup(app):
diff --git a/project/AkkaBuild.scala b/project/AkkaBuild.scala
index 37e8ae39a6..ac3c55b8d5 100644
--- a/project/AkkaBuild.scala
+++ b/project/AkkaBuild.scala
@@ -12,6 +12,7 @@ import com.typesafe.schoir.SchoirPlugin.schoirSettings
import com.typesafe.sbtscalariform.ScalariformPlugin
import com.typesafe.sbtscalariform.ScalariformPlugin.ScalariformKeys
import java.lang.Boolean.getBoolean
+import Sphinx.{ sphinxDocs, sphinxHtml, sphinxLatex, sphinxPdf, sphinxPygments, sphinxTags }
object AkkaBuild extends Build {
System.setProperty("akka.mode", "test") // Is there better place for this?
@@ -30,7 +31,13 @@ object AkkaBuild extends Build {
parallelExecution in GlobalScope := System.getProperty("akka.parallelExecution", "false").toBoolean,
Publish.defaultPublishTo in ThisBuild <<= crossTarget / "repository",
Unidoc.unidocExclude := Seq(samples.id, tutorials.id),
- Dist.distExclude := Seq(actorTests.id, akkaSbtPlugin.id, docs.id)
+ Dist.distExclude := Seq(actorTests.id, akkaSbtPlugin.id, docs.id),
+ // online version of docs
+ sphinxDocs <<= baseDirectory / "akka-docs",
+ sphinxTags in sphinxHtml += "online",
+ sphinxPygments <<= sphinxPygments in LocalProject(docs.id),
+ sphinxLatex <<= sphinxLatex in LocalProject(docs.id),
+ sphinxPdf <<= sphinxPdf in LocalProject(docs.id)
),
aggregate = Seq(actor, testkit, actorTests, remote, camel, cluster, slf4j, agent, transactor, mailboxes, zeroMQ, kernel, akkaSbtPlugin, actorMigration, samples, tutorials, docs)
)
@@ -258,7 +265,7 @@ object AkkaBuild extends Build {
id = "akka-docs",
base = file("akka-docs"),
dependencies = Seq(actor, testkit % "test->test", remote, cluster, slf4j, agent, transactor, fileMailbox, zeroMQ, camel),
- settings = defaultSettings ++ Seq(
+ settings = defaultSettings ++ Sphinx.settings ++ Seq(
unmanagedSourceDirectories in Test <<= baseDirectory { _ ** "code" get },
libraryDependencies ++= Dependencies.docs,
unmanagedSourceDirectories in ScalariformKeys.format in Test <<= unmanagedSourceDirectories in Test
diff --git a/project/Dist.scala b/project/Dist.scala
index 17b42cae42..58a86fc4fa 100644
--- a/project/Dist.scala
+++ b/project/Dist.scala
@@ -28,13 +28,15 @@ object Dist {
distLibJars <<= (thisProjectRef, buildStructure, distExclude) flatMap aggregated(packageBin.task in Compile),
distSrcJars <<= (thisProjectRef, buildStructure, distExclude) flatMap aggregated(packageSrc.task in Compile),
distDocJars <<= (thisProjectRef, buildStructure, distExclude) flatMap aggregated(packageDoc.task in Compile),
- distSources <<= (distDependencies, distLibJars, distSrcJars, distDocJars, Unidoc.unidoc, Sphinx.sphinx) map DistSources,
+ distSources <<= (distDependencies, distLibJars, distSrcJars, distDocJars, Unidoc.unidoc, Sphinx.sphinx in docsProject) map DistSources,
distDirectory <<= crossTarget / "dist",
distUnzipped <<= distDirectory / "unzipped",
distFile <<= (distDirectory, version) { (dir, v) => dir / ("akka-" + v + ".zip") },
dist <<= distTask
)
+ def docsProject: ProjectReference = LocalProject(AkkaBuild.docs.id)
+
def aggregated[T](task: SettingKey[Task[T]])(projectRef: ProjectRef, structure: Load.BuildStructure, exclude: Seq[String]): Task[Seq[T]] = {
val projects = aggregatedProjects(projectRef, structure, exclude)
projects flatMap { task in LocalProject(_) get structure.data } join
diff --git a/project/Sphinx.scala b/project/Sphinx.scala
index 8b8fff7494..43b7e60358 100644
--- a/project/Sphinx.scala
+++ b/project/Sphinx.scala
@@ -20,7 +20,7 @@ object Sphinx {
val sphinx = TaskKey[File]("sphinx", "Build all Sphinx documentation (HTML and PDF combined).")
lazy val settings = Seq(
- sphinxDocs <<= baseDirectory / "akka-docs",
+ sphinxDocs <<= baseDirectory,
sphinxTarget <<= crossTarget / "sphinx",
sphinxPygmentsDir <<= sphinxDocs { _ / "_sphinx" / "pygments" },
sphinxTags in sphinxHtml := Seq.empty,
@@ -62,7 +62,9 @@ object Sphinx {
val changes = in.modified
if (!changes.isEmpty) {
IO.delete(target)
- s.log.info("Building Sphinx %s documentation..." format builder)
+ val tagList = if (tags.isEmpty) "" else tags.mkString(" (", ", ", ")")
+ val desc = "%s%s" format (builder, tagList)
+ s.log.info("Building Sphinx %s documentation..." format desc)
changes.foreach(file => s.log.debug("Changed documentation source: " + file))
val logger = newLogger(s)
val tagOptions = tags flatMap (Seq("-t", _))
@@ -70,8 +72,8 @@ object Sphinx {
val env = "PYTHONPATH" -> pygments.absolutePath
s.log.debug("Command: " + command.mkString(" "))
val exitCode = Process(command, docs, env) ! logger
- if (exitCode != 0) sys.error("Failed to build Sphinx %s documentation." format builder)
- s.log.info("Sphinx %s documentation created: %s" format (builder, target))
+ if (exitCode != 0) sys.error("Failed to build Sphinx %s documentation." format desc)
+ s.log.info("Sphinx %s documentation created: %s" format (desc, target))
target.descendentsExcept("*", "").get.toSet
} else Set.empty
}