mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 10:23:14 -04:00
## Summary This workaround removes the folder that needs to be built differently after cloning the repos. See: https://github.com/elastic/kibana/issues/206077
93 lines
3 KiB
TypeScript
93 lines
3 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the "Elastic License
|
|
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
|
* Public License v 1"; you may not use this file except in compliance with, at
|
|
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
|
*/
|
|
|
|
import { run } from '@kbn/dev-cli-runner';
|
|
import { createFailError } from '@kbn/dev-cli-errors';
|
|
import { REPO_ROOT } from '@kbn/repo-info';
|
|
|
|
import { Repos } from './repos';
|
|
import { Config, Source } from './config';
|
|
import { quietFail } from './error';
|
|
|
|
run(
|
|
async ({ log, flagsReader }) => {
|
|
const cloneOnly = flagsReader.boolean('clone-only');
|
|
|
|
const repos = new Repos(log);
|
|
const docsRepo = await repos.init('elastic/docs.elastic.dev');
|
|
const contentConfig = new Config(docsRepo);
|
|
const sources = contentConfig.getSources().filter((s) => s.location !== 'elastic/kibana');
|
|
|
|
if (sources.some((s) => s.type !== 'github')) {
|
|
throw createFailError(
|
|
'expected all content.js sources from docs.elastic.dev to have "type: github"'
|
|
);
|
|
}
|
|
|
|
const localCloneSources = await Promise.all(
|
|
sources.map(async (source): Promise<Source> => {
|
|
const repo = await repos.init(source.location);
|
|
|
|
// TODO: Remove this, once https://github.com/elastic/kibana/issues/206077 is resolved
|
|
if (source.location === 'elastic/kibana-team') {
|
|
log.info(
|
|
'Removing internal.kibana.dev from elastic/kibana-team - see https://github.com/elastic/kibana/issues/206077 for more details.'
|
|
);
|
|
await repo.run('rm', ['-rf', 'internal.kibana.dev'], { desc: 'rm internal.kibana.dev' });
|
|
}
|
|
|
|
return {
|
|
type: 'file',
|
|
location: repo.resolve(),
|
|
};
|
|
})
|
|
);
|
|
|
|
if (cloneOnly) {
|
|
log.success('cloned repos');
|
|
return;
|
|
}
|
|
|
|
log.info('[docs.elastic.dev] updated sources to point to local repos');
|
|
contentConfig.setSources([
|
|
...localCloneSources,
|
|
{
|
|
type: 'file',
|
|
location: REPO_ROOT,
|
|
},
|
|
]);
|
|
|
|
const showOutput = flagsReader.boolean('debug') || flagsReader.boolean('verbose');
|
|
try {
|
|
log.info('[docs.elastic.dev] installing deps with yarn');
|
|
await docsRepo.run('yarn', [], { desc: 'yarn install', showOutput });
|
|
|
|
log.info('[docs.elastic.dev] initializing docsmobile');
|
|
await docsRepo.run('yarn', ['docsmobile', 'init'], {
|
|
desc: 'yarn docsmobile init',
|
|
showOutput,
|
|
});
|
|
|
|
log.info('[docs.elastic.dev] building');
|
|
await docsRepo.run('yarn', ['build'], { desc: 'yarn build', showOutput });
|
|
} catch {
|
|
quietFail(`failed to build docs`);
|
|
}
|
|
|
|
log.success('docs built successfully');
|
|
},
|
|
{
|
|
flags: {
|
|
boolean: ['clone-only'],
|
|
help: `
|
|
--clone-only Simply clone the repos, used to populate the worker images
|
|
`,
|
|
},
|
|
}
|
|
);
|