UNPKG

1.81 kBJavaScriptView Raw
1module.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