1 | module.exports = function (grunt) {
|
2 | 'use strict';
|
3 |
|
4 | var Path = require('path');
|
5 | var TypeDoc = require(Path.join(__dirname, '..', 'bin', 'typedoc.js'));
|
6 |
|
7 | grunt.registerMultiTask('typedoc', 'Generate documentations for TypeScript projects', function () {
|
8 | var options = this.options({});
|
9 | if (!options.out && !options.json) {
|
10 | grunt.log.error('You must either specify the \'out\' or \'json\' option.');
|
11 | return false;
|
12 | }
|
13 |
|
14 | if (this.filesSrc.length == 0) {
|
15 | grunt.log.error('No source files specified.');
|
16 | return false;
|
17 | }
|
18 |
|
19 | var out = options.out;
|
20 | var json = options.json;
|
21 | delete options.out;
|
22 | delete options.json;
|
23 |
|
24 | options.logger = function(message, level, newLine) {
|
25 | switch (level) {
|
26 | case TypeDoc.LogLevel.Success:
|
27 | grunt.log.ok(message);
|
28 | break;
|
29 | case TypeDoc.LogLevel.Info:
|
30 | case TypeDoc.LogLevel.Warn:
|
31 | if (newLine) {
|
32 | grunt.log.writeln(message);
|
33 | } else {
|
34 | grunt.log.write(message);
|
35 | }
|
36 | break;
|
37 | case TypeDoc.LogLevel.Error:
|
38 | grunt.log.error(message);
|
39 | break;
|
40 | default:
|
41 | grunt.verbose.write(message);
|
42 | break;
|
43 | }
|
44 | };
|
45 |
|
46 | var app = new TypeDoc.Application(options);
|
47 | var project = app.convert(app.expandInputFiles(this.filesSrc));
|
48 | if (!project) {
|
49 | return false;
|
50 | }
|
51 |
|
52 | if (out) app.generateDocs(project, out);
|
53 | if (json) app.generateJson(project, json);
|
54 | return true;
|
55 | });
|
56 | }; |
\ | No newline at end of file |