UNPKG

sassdoc

Version:
151 lines (108 loc) 4.71 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); exports.default = cli; var _environment = require('./environment'); var _environment2 = _interopRequireDefault(_environment); var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); var _sassdoc = require('./sassdoc'); var _sassdoc2 = _interopRequireDefault(_sassdoc); var _errors = require('./errors'); var errors = _interopRequireWildcard(_errors); var _docopt = require('docopt'); var _vinylSourceStream = require('vinyl-source-stream'); var _vinylSourceStream2 = _interopRequireDefault(_vinylSourceStream); var _package = require('../package.json'); var _package2 = _interopRequireDefault(_package); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var doc = '\nUsage:\n sassdoc - [options]\n sassdoc <src>... [options]\n\nArguments:\n <src> Path to your Sass folder.\n\nOptions:\n -h, --help Bring help.\n --version Show version.\n -v, --verbose Enable verbose mode.\n -d, --dest=<dir> Documentation folder.\n -c, --config=<path> Path to JSON/YAML configuration file.\n -t, --theme=<name> Theme to use.\n -p, --parse Parse the input and output JSON data to stdout.\n --no-update-notifier Disable update notifier check.\n --strict Turn warnings into errors.\n --debug Output debugging information.\n'; function cli() { var argv = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process.argv.slice(2); var options = (0, _docopt.docopt)(doc, { version: _package2.default.version, argv: argv }); if (!options['-'] && !options['<src>'].length) { // Trigger help display. (0, _docopt.docopt)(doc, { version: _package2.default.version, argv: ['--help'] }); } var logger = new _logger2.default(options['--verbose'], options['--debug'] || process.env.SASSDOC_DEBUG); var env = new _environment2.default(logger, options['--verbose'], options['--strict']); logger.debug('argv:', function () { return (0, _stringify2.default)(argv); }); env.on('error', function (error) { if (error instanceof errors.Warning) { process.exit(2); } process.exit(1); }); env.load(options['--config']); // Ensure CLI options. ensure(env, options, { dest: '--dest', theme: '--theme', noUpdateNotifier: '--no-update-notifier' }); env.postProcess(); // Run update notifier if not explicitely disabled. if (!env.noUpdateNotifier) { require('./notifier').default(_package2.default, logger); } var handler = void 0, cb = void 0; // Whether to parse only or to documentize. if (!options['--parse']) { handler = _sassdoc2.default; cb = function cb() {}; } else { handler = _sassdoc.parse; cb = function cb(data) { return console.log((0, _stringify2.default)(data, null, 2)); }; } if (options['-']) { return process.stdin.pipe((0, _vinylSourceStream2.default)()).pipe(handler(env)).on('data', cb); } handler(options['<src>'], env).then(cb); } /** * Ensure that CLI options take precedence over configuration values. * * For each name/option tuple, if the option is set, override configuration * value. */ function ensure(env, options, names) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(names)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var k = _step.value; var v = names[k]; if (options[v]) { env[k] = options[v]; env[k + 'Cwd'] = true; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }