adding extension point for adding endpoint defs to console autocomplete (#17769) (#17774)

This commit is contained in:
Bill McConaghy 2018-04-18 14:06:07 -04:00 committed by GitHub
parent acd99a13c5
commit b9599a7177
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View file

@ -3,11 +3,12 @@ const { join, basename } = require('path');
const { readFileSync } = require('fs');
const { merge } = require('lodash');
const extensionSpecFilePaths = [];
export function getSpec() {
const generatedFiles = glob.sync(join(__dirname, 'generated', '*.json'));
const overrideFiles = glob.sync(join(__dirname, 'overrides', '*.json'));
return generatedFiles.reduce((acc, file) => {
const result = generatedFiles.reduce((acc, file) => {
const overrideFile = overrideFiles.find(f => basename(f) === basename(file));
const loadedSpec = JSON.parse(readFileSync(file, 'utf8'));
if (overrideFile) {
@ -25,4 +26,17 @@ export function getSpec() {
return { ...acc, ...spec };
}, {});
extensionSpecFilePaths.forEach((extensionSpecFilePath) => {
const extensionFiles = glob.sync(join(extensionSpecFilePath, '*.json'));
extensionFiles.forEach((extensionFile) => {
merge(result, JSON.parse(readFileSync(extensionFile, 'utf8')));
});
});
return result;
}
export function consoleMixin(kbnServer, server) {
server.decorate('server', 'addExtensionSpecFilePath', (extensionSpecFilePath) => {
extensionSpecFilePaths.push(extensionSpecFilePath);
});
}

View file

@ -19,6 +19,7 @@ import { savedObjectsMixin } from './saved_objects';
import { kibanaIndexMappingsMixin } from './mappings';
import { serverExtensionsMixin } from './server_extensions';
import { uiMixin } from '../ui';
import { consoleMixin } from '../core_plugins/console/api_server/spec';
const rootDir = fromRoot('.');
@ -63,6 +64,8 @@ export default class KbnServer {
// setup saved object routes
savedObjectsMixin,
// setup extension point for console autocomplete endpoints
consoleMixin,
// ensure that all bundles are built, or that the
// watch bundle server is running
optimizeMixin,