95 lines
2.7 KiB
JavaScript
95 lines
2.7 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
// initialize the environment for Node.js
|
||
|
(() => {
|
||
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
|
||
|
let env;
|
||
|
let jsdocPath = __dirname;
|
||
|
const pwd = process.cwd();
|
||
|
|
||
|
// Create a custom require method that adds `lib/jsdoc` and `node_modules` to the module
|
||
|
// lookup path. This makes it possible to `require('jsdoc/foo')` from external templates and
|
||
|
// plugins, and within JSDoc itself. It also allows external templates and plugins to
|
||
|
// require JSDoc's module dependencies without installing them locally.
|
||
|
/* eslint-disable no-global-assign, no-redeclare */
|
||
|
require = require('requizzle')({
|
||
|
requirePaths: {
|
||
|
before: [path.join(__dirname, 'lib')],
|
||
|
after: [path.join(__dirname, 'node_modules')]
|
||
|
},
|
||
|
infect: true
|
||
|
});
|
||
|
/* eslint-enable no-global-assign, no-redeclare */
|
||
|
|
||
|
// resolve the path if it's a symlink
|
||
|
if ( fs.statSync(jsdocPath).isSymbolicLink() ) {
|
||
|
jsdocPath = path.resolve( path.dirname(jsdocPath), fs.readlinkSync(jsdocPath) );
|
||
|
}
|
||
|
|
||
|
env = require('./lib/jsdoc/env');
|
||
|
env.dirname = jsdocPath;
|
||
|
env.pwd = pwd;
|
||
|
env.args = process.argv.slice(2);
|
||
|
})();
|
||
|
|
||
|
/**
|
||
|
* Data about the environment in which JSDoc is running, including the configuration settings that
|
||
|
* were used to run JSDoc.
|
||
|
*
|
||
|
* @deprecated As of JSDoc 3.4.0. Use `require('jsdoc/env')` to access the `env` object. The global
|
||
|
* `env` object will be removed in a future release.
|
||
|
* @namespace
|
||
|
* @name env
|
||
|
*/
|
||
|
global.env = (() => require('./lib/jsdoc/env'))();
|
||
|
|
||
|
/**
|
||
|
* Data that must be shared across the entire application.
|
||
|
*
|
||
|
* @deprecated As of JSDoc 3.4.0. Avoid using the `app` object. The global `app` object and the
|
||
|
* `jsdoc/app` module will be removed in a future release.
|
||
|
* @namespace
|
||
|
* @name app
|
||
|
*/
|
||
|
global.app = (() => require('./lib/jsdoc/app'))();
|
||
|
|
||
|
(() => {
|
||
|
const env = global.env;
|
||
|
const cli = require('./cli');
|
||
|
|
||
|
function cb(errorCode) {
|
||
|
cli.logFinish();
|
||
|
cli.exit(errorCode || 0);
|
||
|
}
|
||
|
|
||
|
cli.setVersionInfo()
|
||
|
.loadConfig();
|
||
|
|
||
|
if (!env.opts.test) {
|
||
|
cli.configureLogger();
|
||
|
}
|
||
|
|
||
|
cli.logStart();
|
||
|
|
||
|
if (env.opts.debug) {
|
||
|
/**
|
||
|
* Recursively print an object's properties to stdout. This method is safe to use with
|
||
|
* objects that contain circular references.
|
||
|
*
|
||
|
* This method is available only when JSDoc is run with the `--debug` option.
|
||
|
*
|
||
|
* @global
|
||
|
* @name dump
|
||
|
* @private
|
||
|
* @param {...*} obj - Object(s) to print to stdout.
|
||
|
*/
|
||
|
global.dump = (...args) => {
|
||
|
console.log(require('./lib/jsdoc/util/dumper').dump(args));
|
||
|
};
|
||
|
}
|
||
|
|
||
|
cli.runCommand(cb);
|
||
|
})();
|