1 | (function () {
|
2 | 'use strict';
|
3 | var fs = require('fs');
|
4 | var fse = require('fs-extra');
|
5 | var child_process = require('child_process');
|
6 | var path = require('path');
|
7 |
|
8 | var jsdocConfigFilename = '_jsdocConfTemp.json';
|
9 | var jsdocToolPath = 'node_modules/jsdoc/jsdoc.js';
|
10 | var jsdocToolPathFallback = '../jsdoc/jsdoc.js';
|
11 | var jsdocPluginPath = 'jsdocs/plugins/yamlGenerator';
|
12 | var jsdocOutputPath = '_yamlGeneratorOutput/';
|
13 |
|
14 | if (process.argv.length < 3) {
|
15 | console.log('Usage: node node2docfx {conf.json}');
|
16 | }
|
17 | var node2docfxToolDir = path.dirname(process.argv[1]);
|
18 | var node2docfxConfigDir = path.dirname(process.argv[2]);
|
19 |
|
20 |
|
21 | var configPath = process.argv[2];
|
22 | var config = {};
|
23 | if (fs.existsSync(configPath)) {
|
24 | config = JSON.parse(fs.readFileSync(configPath));
|
25 | } else {
|
26 | console.error('Config file ' + configPath + ' doesn\'t exist.');
|
27 | process.exit(1);
|
28 | }
|
29 |
|
30 |
|
31 | var jsdocConfig = {
|
32 | source: config.source,
|
33 | destination: config.destination,
|
34 | plugins: [path.join(node2docfxToolDir, jsdocPluginPath)],
|
35 | package: config.package,
|
36 | readme: config.readme,
|
37 | };
|
38 | if (config.repo && config.repo.length > 0) {
|
39 | jsdocConfig.repo = config.repo[0];
|
40 | }
|
41 |
|
42 | var jsdocConfigPath = path.join(node2docfxConfigDir, jsdocConfigFilename);
|
43 | fs.writeFileSync(jsdocConfigPath, JSON.stringify(jsdocConfig));
|
44 |
|
45 |
|
46 | var toolPath = path.join(node2docfxToolDir, jsdocToolPath);
|
47 | if (!fs.existsSync(toolPath)) {
|
48 | toolPath = path.join(node2docfxToolDir, jsdocToolPathFallback);
|
49 | if (!fs.existsSync(toolPath)) {
|
50 | console.err('Can\'t find jsdoc.');
|
51 | }
|
52 | }
|
53 |
|
54 | if (process.execArgv.length > 0 && process.execArgv[0].indexOf('--inspect') >= 0) {
|
55 | child_process.execFileSync('node', ['--inspect-brk=5858', toolPath, '-c', jsdocConfigFilename, '-r'], { cwd: node2docfxConfigDir });
|
56 | } else {
|
57 | child_process.execFileSync('node', [toolPath, '-c', jsdocConfigFilename, '-r'], { cwd: node2docfxConfigDir });
|
58 | }
|
59 |
|
60 |
|
61 |
|
62 | if (config.destination) {
|
63 | var source = path.join(node2docfxConfigDir, jsdocOutputPath);
|
64 | var dest = path.join(node2docfxConfigDir, config.destination);
|
65 | fse.ensureDirSync(path.dirname(dest));
|
66 | fs.renameSync(source, dest);
|
67 | }
|
68 | fs.unlinkSync(jsdocConfigPath);
|
69 | }());
|
70 |
|