Skip to content

Commit ef2d650

Browse files
committed
Merge branch 'master' of github.com:functionaljava/functionaljava
2 parents c3236d2 + bb324fa commit ef2d650

File tree

1 file changed

+54
-23
lines changed

1 file changed

+54
-23
lines changed

project/build/FunctionalJavaProject.scala

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,20 @@ import sbt._
22
import java.util.jar.Attributes.Name._
33
import Process._
44

5-
final class FunctionalJavaProject(info: ProjectInfo) extends DefaultProject(info) {
5+
final class FunctionalJavaProject(info: ProjectInfo) extends DefaultProject(info) with JavaDocProject {
66
override def compileOptions = target(Target.Java1_5) :: List(CompileOptions.Unchecked, "-encoding", "UTF-8").map(CompileOption) ++ super.compileOptions
77

88
override def javaCompileOptions = List("-target", "1.5", "-encoding", "UTF-8", "-Xlint:unchecked").map(JavaCompileOption) ++ super.javaCompileOptions
99

10-
override def packageOptions =
11-
ManifestAttributes(
12-
(IMPLEMENTATION_TITLE, "Functional Java")
13-
, (IMPLEMENTATION_URL, "http://functionaljava.org/")
14-
, (IMPLEMENTATION_VENDOR, "Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Jason Zaugg")
15-
, (SEALED, "true")
16-
) :: Nil
17-
18-
override protected def disableCrossPaths = true
19-
2010
override def mainJavaSourcePath = "src" / "main"
2111

2212
override def testScalaSourcePath = "src" / "test"
2313

24-
override def managedStyle = ManagedStyle.Maven
14+
val scalacheckDependency = "org.scala-tools.testing" %% "scalacheck" % "1.8" % "test"
15+
16+
override def testFrameworks = Seq(new TestFramework("org.scalacheck.ScalaCheckFramework"))
17+
18+
override protected def disableCrossPaths = true
2519

2620
override def packageSrcJar = defaultJarPath("-sources.jar")
2721

@@ -31,21 +25,29 @@ final class FunctionalJavaProject(info: ProjectInfo) extends DefaultProject(info
3125

3226
lazy val sourceArtifact = Artifact(artifactID, "src", "jar", Some("sources"), Nil, None)
3327

34-
val scalacheckDependency = "org.scala-tools.testing" %% "scalacheck" % "1.8" % "test"
28+
override def managedStyle = ManagedStyle.Maven
29+
30+
val authors = "Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Jason Zaugg"
31+
32+
val projectNameFull = "Functional Java"
33+
val projectUrl = "http://functionaljava.org/"
34+
35+
override def packageOptions =
36+
ManifestAttributes(
37+
(IMPLEMENTATION_TITLE, projectNameFull)
38+
, (IMPLEMENTATION_URL, projectUrl)
39+
, (IMPLEMENTATION_VENDOR, authors)
40+
, (SEALED, "true")
41+
) :: Nil
3542

3643
override def packageToPublishActions = super.packageToPublishActions ++ Seq(packageSrc, packageTestSrc, packageDocs)
3744

38-
override protected def docAction = javadocTask(mainLabel, mainSourceRoots, mainSources, mainDocPath, docClasspath).dependsOn(compile) describedAs "Generate Javadoc"
39-
40-
def javadocTask(label: String, sourceRoot: PathFinder, sources: PathFinder, outputDirectory: Path, classpath: PathFinder): Task = task {
41-
val cmdLine = <x>javadoc -quiet -sourcepath {sourceRoot.get.toList.head} -d {outputDirectory} {sources.getPaths.mkString(" ")}</x>
42-
log.debug(cmdLine.toString)
43-
cmdLine !
44-
45-
None
46-
}
45+
override protected def docAction = javadocAction
4746

48-
override def testFrameworks = Seq(new TestFramework("org.scalacheck.ScalaCheckFramework"))
47+
override def javadocOptions = Seq(
48+
WindowTitle(projectNameFull + " " + version.toString)
49+
, DocTitle(<div><a href={projectUrl} target="_blank">{projectNameFull}</a> {version.toString} API Specification</div>.toString)
50+
, Header(<div><p><em>Copyright 2008 - 2010 {authors}</em></p>This software is released under an open source BSD licence.</div>.toString))
4951

5052
override def consoleInit =
5153
"""
@@ -56,3 +58,32 @@ import org.scalacheck.Prop._
5658
"""
5759

5860
}
61+
62+
trait JavaDocProject {
63+
self: DefaultProject =>
64+
65+
sealed abstract class JavadocOption
66+
67+
case class WindowTitle(t: String) extends JavadocOption
68+
69+
case class DocTitle(t: String) extends JavadocOption
70+
71+
case class Header(html: String) extends JavadocOption
72+
73+
def javadocOptions = Seq[JavadocOption]()
74+
75+
def javadocAction = javadocTask(mainLabel, mainSourceRoots, mainSources, mainDocPath, docClasspath, javadocOptions).dependsOn(compile) describedAs "Generate Javadoc"
76+
77+
def javadocTask(label: String, sourceRoot: PathFinder, sources: PathFinder, outputDirectory: Path, classpath: PathFinder, options: Seq[JavadocOption]): Task = task {
78+
val os = options flatMap {
79+
case WindowTitle(t) => Seq("-windowtitle", t)
80+
case DocTitle(t) => Seq("-doctitle", t)
81+
case Header(html) => Seq("-header", html)
82+
}
83+
val proc = Process(Seq("javadoc", "-quiet", "-sourcepath", sourceRoot.get.toList.head.toString, "-d", outputDirectory.toString) ++ os ++ sources.getPaths)
84+
log.debug(proc.toString)
85+
proc !
86+
87+
None
88+
}
89+
}

0 commit comments

Comments
 (0)