1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
/* scaladoc, a documentation generator for Scala
* Copyright 2005-2009 LAMP/EPFL
* @author Martin Odersky
* @author Geoffrey Washburn
*/
// $Id$
package scala.tools.nsc
import java.io.File
import scala.tools.nsc.reporters.{Reporter, ConsoleReporter}
import scala.tools.nsc.util.FakePos //{Position}
/** The main class for scaladoc, a front-end for the Scala compiler
* that generates documentation from source files.
*/
object ScalaDoc {
val versionMsg: String =
"Scaladoc " +
Properties.versionString + " -- " +
Properties.copyrightString
var reporter: ConsoleReporter = _
def error(msg: String): Unit = {
reporter.error(FakePos("scalac"), msg + "\n scalac -help gives more information")
}
def process(args: Array[String]): Unit = {
val docSettings: doc.Settings =
new doc.Settings(error)
reporter = new ConsoleReporter(docSettings)
val command =
new CompilerCommand(args.toList, docSettings, error, false)
if (!reporter.hasErrors) { // No need to continue if reading the command generated errors
if (docSettings.version.value)
reporter.info(null, versionMsg, true)
else if (docSettings.help.value) {
reporter.info(null, command.usageMsg, true)
}
else if (docSettings.Xhelp.value)
reporter.info(null, command.xusageMsg, true)
else if (docSettings.Yhelp.value)
reporter.info(null, command.yusageMsg, true)
else if (docSettings.showPlugins.value)
reporter.warning(null, "Plugins are not available when using Scaladoc")
else if (docSettings.showPhases.value)
reporter.warning(null, "Phases are restricted when using Scaladoc")
else try {
if (docSettings.target.value == "msil") {
val libpath = System.getProperty("msil.libpath")
if (libpath != null)
docSettings.assemrefs.value = docSettings.assemrefs.value + File.pathSeparator + libpath
}
val docProcessor = new scala.tools.nsc.doc.DocFactory(reporter, docSettings)
docProcessor.document(command.files)
}
catch {
case ex @ FatalError(msg) =>
if (docSettings.debug.value) ex.printStackTrace();
reporter.error(null, "fatal error: " + msg)
}
finally {
reporter.printSummary()
}
}
}
def main(args: Array[String]): Unit = {
process(args)
exit(if (reporter.hasErrors) 1 else 0)
}
}
|