Permalink
Browse files

add unidoc

  • Loading branch information...
1 parent 36a13a7 commit 0b81cb63924b50d0a6312d53726f338914106dc8 Sam Ritchie committed Feb 14, 2013
Showing with 78 additions and 1 deletion.
  1. +21 −1 project/Build.scala
  2. +54 −0 project/Unidoc.scala
  3. +3 −0 project/plugins.sbt
View
@@ -1,10 +1,30 @@
+package algebird
+
import sbt._
import Keys._
+import com.typesafe.sbt.SbtSite.{ site, SiteKeys }
+import com.typesafe.sbt.SbtGhPages.ghpages
+import com.typesafe.sbt.SbtGit.GitKeys.gitRemoteRepo
+
object AlgebirdBuild extends Build {
+ lazy val unidocSettings: Seq[sbt.Setting[_]] =
+ site.includeScaladoc("target/site") ++ Seq(
+ scalacOptions in doc <++= (version, baseDirectory in LocalProject("algebird")).map { (v, rootBase) =>
+ val tagOrBranch = if (v.endsWith("-SNAPSHOT")) "develop" else v
+ val docSourceUrl = "https://github.com/twitter/algebird/tree/" + tagOrBranch + "€{FILE_PATH}.scala"
+ Seq("-sourcepath", rootBase.getAbsolutePath, "-doc-source-url", docSourceUrl)
+ },
+ Unidoc.unidocDirectory <<= target/ "site",
+ gitRemoteRepo := "git@github.com:twitter/algebird.git"
+ )
+
+ lazy val publishSettings = site.settings ++ Unidoc.settings ++ ghpages.settings ++ unidocSettings
+
val sharedSettings = Project.defaultSettings ++ Seq(
organization := "com.twitter",
version := "0.1.9-SNAPSHOT",
+ scalaVersion := "2.9.2",
crossScalaVersions := Seq("2.9.2", "2.10.0"),
resolvers ++= Seq(
@@ -62,7 +82,7 @@ object AlgebirdBuild extends Build {
lazy val algebird = Project(
id = "algebird",
base = file("."),
- settings = sharedSettings
+ settings = sharedSettings ++ publishSettings
).settings(
test := { }
).aggregate(algebirdTest,
View
@@ -0,0 +1,54 @@
+package algebird
+
+import sbt._
+import sbt.Keys._
+import sbt.Project.Initialize
+
+/** Borrowed from https://github.com/akka/akka/blob/master/project/Unidoc.scala */
+object Unidoc {
+ val unidocDirectory = SettingKey[File]("unidoc-directory")
+ val unidocExclude = SettingKey[Seq[String]]("unidoc-exclude")
+ val unidocAllSources = TaskKey[Seq[Seq[File]]]("unidoc-all-sources")
+ val unidocSources = TaskKey[Seq[File]]("unidoc-sources")
+ val unidocAllClasspaths = TaskKey[Seq[Classpath]]("unidoc-all-classpaths")
+ val unidocClasspath = TaskKey[Seq[File]]("unidoc-classpath")
+ val unidoc = TaskKey[File]("unidoc", "Create unified scaladoc for all aggregates")
+
+ lazy val settings = Seq(
+ unidocDirectory <<= crossTarget / "unidoc",
+ unidocExclude := Seq.empty,
+ unidocAllSources <<= (thisProjectRef, buildStructure, unidocExclude) flatMap allSources,
+ unidocSources <<= unidocAllSources map { _.flatten },
+ unidocAllClasspaths <<= (thisProjectRef, buildStructure, unidocExclude) flatMap allClasspaths,
+ unidocClasspath <<= unidocAllClasspaths map { _.flatten.map(_.data).distinct },
+ unidoc <<= unidocTask
+ )
+
+ def allSources(projectRef: ProjectRef, structure: Load.BuildStructure, exclude: Seq[String]): Task[Seq[Seq[File]]] = {
+ val projects = aggregated(projectRef, structure, exclude)
+ projects flatMap { sources in Compile in LocalProject(_) get structure.data } join
+ }
+
+ def allClasspaths(projectRef: ProjectRef, structure: Load.BuildStructure, exclude: Seq[String]): Task[Seq[Classpath]] = {
+ val projects = aggregated(projectRef, structure, exclude)
+ projects flatMap { dependencyClasspath in Compile in LocalProject(_) get structure.data } join
+ }
+
+ def aggregated(projectRef: ProjectRef, structure: Load.BuildStructure, exclude: Seq[String]): Seq[String] = {
+ val aggregate = Project.getProject(projectRef, structure).toSeq.flatMap(_.aggregate)
+ aggregate flatMap { ref =>
+ if (exclude contains ref.project) Seq.empty
+ else ref.project +: aggregated(ref, structure, exclude)
+ }
+ }
+
+ def unidocTask: Initialize[Task[File]] = {
+ (compilers, cacheDirectory, unidocSources, unidocClasspath, unidocDirectory, scalacOptions in doc, streams) map {
+ (compilers, cache, sources, classpath, target, options, s) => {
+ val scaladoc = new Scaladoc(100, compilers.scalac)
+ scaladoc.cached(cache / "unidoc", "main", sources, classpath, target, options, s.log)
+ target
+ }
+ }
+ }
+}
View
@@ -0,0 +1,3 @@
+resolvers += "jgit-repo" at "http://download.eclipse.org/jgit/maven"
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.5.0")

0 comments on commit 0b81cb6

Please sign in to comment.