#!/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); })();