sassdoc
Version:
Release the docs!
151 lines (108 loc) • 4.71 kB
JavaScript
;
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;
}
}
}
}