From 43c6f9c6605078031d5a10597ca4439cdf631836 Mon Sep 17 00:00:00 2001 From: Joe Fleming Date: Wed, 14 Dec 2016 17:03:15 -0700 Subject: [PATCH] Use json files to override default config values (elastic/kibana-plugin-helpers#21) * read json overrides, mix into defaults * rename plugin config helper * use the plugin config in start Original commit: elastic/kibana-plugin-helpers@4cfbe28128d19a424dc1d507917d06b9099605a6 --- packages/kbn-plugin-helpers/lib/id_plugin.js | 15 ---------- .../kbn-plugin-helpers/lib/plugin_config.js | 30 +++++++++++++++++++ packages/kbn-plugin-helpers/lib/run.js | 5 ++-- .../tasks/build/build_action.spec.js | 2 +- .../tasks/start/start_action.js | 5 +--- 5 files changed, 35 insertions(+), 22 deletions(-) delete mode 100644 packages/kbn-plugin-helpers/lib/id_plugin.js create mode 100644 packages/kbn-plugin-helpers/lib/plugin_config.js diff --git a/packages/kbn-plugin-helpers/lib/id_plugin.js b/packages/kbn-plugin-helpers/lib/id_plugin.js deleted file mode 100644 index f11b6104fe79..000000000000 --- a/packages/kbn-plugin-helpers/lib/id_plugin.js +++ /dev/null @@ -1,15 +0,0 @@ -var resolve = require('path').resolve; - -module.exports = function (root) { - if (!root) root = process.cwd(); - var pkg = require(resolve(root, 'package.json')); - - return { - root: root, - kibanaRoot: resolve(root, '../kibana'), - id: pkg.name, - pkg: pkg, - version: pkg.version, - config: (pkg.config && pkg.config.kibanaPluginHelpers) || {} - }; -}; diff --git a/packages/kbn-plugin-helpers/lib/plugin_config.js b/packages/kbn-plugin-helpers/lib/plugin_config.js new file mode 100644 index 000000000000..957c75386d93 --- /dev/null +++ b/packages/kbn-plugin-helpers/lib/plugin_config.js @@ -0,0 +1,30 @@ +var resolve = require('path').resolve; +var readFileSync = require('fs').readFileSync; + +module.exports = function (root) { + if (!root) root = process.cwd(); + var pkg = require(resolve(root, 'package.json')); + // config files to read from, in the order they are merged together + var configFiles = [ '.kibana-plugin-helpers.json', '.kibana-plugin-helpers.dev.json' ]; + var config = {}; + + configFiles.forEach(function (configFile) { + try { + var content = JSON.parse(readFileSync(resolve(root, configFile))); + config = Object.assign(config, content); + } catch (e) { + // noop + } + }); + + // if the kibanaRoot is set, use resolve to ensure correct resolution + if (config.kibanaRoot) config.kibanaRoot = resolve(root, config.kibanaRoot); + + return Object.assign({ + root: root, + kibanaRoot: resolve(root, '../kibana'), + id: pkg.name, + pkg: pkg, + version: pkg.version, + }, config); +}; diff --git a/packages/kbn-plugin-helpers/lib/run.js b/packages/kbn-plugin-helpers/lib/run.js index c760d41cd24f..24c6a5089253 100644 --- a/packages/kbn-plugin-helpers/lib/run.js +++ b/packages/kbn-plugin-helpers/lib/run.js @@ -1,10 +1,11 @@ -var idPlugin = require('./id_plugin'); +var pluginConfig = require('./plugin_config'); module.exports = function run(name) { var action = require('../tasks/' + name); return function () { // call the action function with the plugin, then all // renaining arguments from commander - action.apply(null, [idPlugin()].concat([].slice.apply(arguments))); + var plugin = pluginConfig(); + action.apply(null, [plugin].concat([].slice.apply(arguments))); }; }; diff --git a/packages/kbn-plugin-helpers/tasks/build/build_action.spec.js b/packages/kbn-plugin-helpers/tasks/build/build_action.spec.js index 037a4004802c..b0eb6c6be7a9 100644 --- a/packages/kbn-plugin-helpers/tasks/build/build_action.spec.js +++ b/packages/kbn-plugin-helpers/tasks/build/build_action.spec.js @@ -7,7 +7,7 @@ const buildAction = require('./build_action'); const PLUGIN_FIXTURE = resolve(__dirname, '__fixtures__/test_plugin'); const PLUGIN_BUILD_DIR = resolve(PLUGIN_FIXTURE, 'build'); -const PLUGIN = require('../../lib/id_plugin')(PLUGIN_FIXTURE); +const PLUGIN = require('../../lib/plugin_config')(PLUGIN_FIXTURE); describe('build_action', () => { beforeEach(() => del(PLUGIN_BUILD_DIR)); diff --git a/packages/kbn-plugin-helpers/tasks/start/start_action.js b/packages/kbn-plugin-helpers/tasks/start/start_action.js index 7bea32a1f853..ba47b011101b 100644 --- a/packages/kbn-plugin-helpers/tasks/start/start_action.js +++ b/packages/kbn-plugin-helpers/tasks/start/start_action.js @@ -1,13 +1,10 @@ module.exports = function (plugin, command) { - var resolve = require('path').resolve; var execFileSync = require('child_process').execFileSync; - var kibanaDir = resolve(plugin.root, '../kibana'); - var cmd = (process.platform === 'win32') ? 'bin\\kibana.bat' : 'bin/kibana'; var args = ['--dev', '--plugin-path', plugin.root, ...command.unkownOptions]; execFileSync(cmd, args, { - cwd: kibanaDir, + cwd: plugin.kibanaRoot, stdio: ['ignore', 1, 2] }); };