UNPKG

2.4 kBJavaScriptView Raw
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 // read node2docfx's config
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 // generate jsdoc's config
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 // run jsdoc
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 // rename and clear
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