post-load-plugins
Version:
Automatically loads plug-ins with configuration
1 lines • 3.01 kB
JavaScript
;var _toConsumableArray2=require('babel-runtime/helpers/toConsumableArray'),_toConsumableArray3=_interopRequireDefault(_toConsumableArray2),_keys=require('babel-runtime/core-js/object/keys'),_keys2=_interopRequireDefault(_keys),_of=require('babel-runtime/core-js/array/of'),_of2=_interopRequireDefault(_of),_slicedToArray2=require('babel-runtime/helpers/slicedToArray'),_slicedToArray3=_interopRequireDefault(_slicedToArray2),_path=require('path'),_path2=_interopRequireDefault(_path),_flatry3=require('flatry'),_flatry4=_interopRequireDefault(_flatry3),_postSequence=require('post-sequence'),_postSequence2=_interopRequireDefault(_postSequence),_postProcessor=require('./post-processor'),_postProcessor2=_interopRequireDefault(_postProcessor),_postConfig=require('post-config'),_postConfig2=_interopRequireDefault(_postConfig),_logSymbols=require('log-symbols'),_logSymbols2=_interopRequireDefault(_logSymbols),_chalk=require('chalk'),_chalk2=_interopRequireDefault(_chalk),_textTable=require('text-table'),_textTable2=_interopRequireDefault(_textTable),_indentString=require('indent-string'),_indentString2=_interopRequireDefault(_indentString),_toSlugCase=require('to-slug-case'),_toSlugCase2=_interopRequireDefault(_toSlugCase);Object.defineProperty(exports,'__esModule',{value:!0});function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}_chalk2.default.enabled=!0;var loadPlugin=function(plugin,warning,pwd){var _flatry=(0,_flatry4.default)(function(){return require(_path2.default.join(pwd,'node_modules',(0,_toSlugCase2.default)(plugin)))}),_flatry2=(0,_slicedToArray3.default)(_flatry,2),err=_flatry2[0],result=_flatry2[1];return err?(warning.push((0,_of2.default)((0,_indentString2.default)(`${_chalk2.default.red(_logSymbols2.default.error)}`,4),plugin)),function(){}):result};exports.default=function(){for(var _len=arguments.length,options=Array(_len),_key=0;_key<_len;_key++)options[_key]=arguments[_key];var warning=[];return function(ctx,res){var pwd=options[0].pwd,processor=(0,_postProcessor2.default)(ctx,res),config=(0,_postSequence2.default)(_postConfig2.default.apply(void 0,options)[processor.name].plugins,{processor:processor.name,namespace:!0}),plugins=(0,_keys2.default)(config).map(function(plugin){return loadPlugin(plugin,warning,pwd||process.cwd())(config[plugin])}).filter(function(plugin){return void 0!==plugin});if(0<warning.length&&(console.log((0,_indentString2.default)(`${_chalk2.default.yellow(_logSymbols2.default.warning)} ${_chalk2.default.yellow('warning'.toUpperCase())} plugins for ${_chalk2.default.red(processor.name)} is not installed`,2)),console.log(`${(0,_textTable2.default)(warning)}`),console.log('\n')),processor.plugins){var _processor$plugins;(_processor$plugins=processor.plugins).push.apply(_processor$plugins,(0,_toConsumableArray3.default)(plugins))}return processor.plugins||plugins.forEach(function(plugin){return ctx=plugin(ctx)}),'function'==typeof res?res(null,ctx):ctx}},module.exports=exports['default'];