-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into testMapUserImportGroup
- Loading branch information
Showing
61 changed files
with
11,914 additions
and
10,447 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,8 +8,7 @@ | |
.idea | ||
.teamcity | ||
.yarn-local-mirror | ||
bazel-cache | ||
bazel-dist | ||
/bazel | ||
build | ||
node_modules | ||
target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,4 +46,4 @@ snapshots.js | |
/packages/kbn-monaco/src/painless/antlr | ||
|
||
# Bazel | ||
/bazel-* | ||
/bazel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -78,5 +78,5 @@ report.asciidoc | |
.yarn-local-mirror | ||
|
||
# Bazel | ||
/bazel-* | ||
/bazel | ||
/.bazelrc.user |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"main": "../target/stdio" | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* and the Server Side Public License, v 1; you may not use this file except in | ||
* compliance with, at your election, the Elastic License or the Server Side | ||
* Public License, v 1. | ||
*/ | ||
|
||
import dedent from 'dedent'; | ||
import del from 'del'; | ||
import ora from 'ora'; | ||
import { join, relative } from 'path'; | ||
|
||
import { getBazelDiskCacheFolder, getBazelRepositoryCacheFolder, runBazel } from '../utils/bazel'; | ||
import { isDirectory } from '../utils/fs'; | ||
import { log } from '../utils/log'; | ||
import { ICommand } from './'; | ||
|
||
export const ResetCommand: ICommand = { | ||
description: | ||
'Deletes node_modules and output directories, resets internal and disk caches, and stops Bazel server', | ||
name: 'reset', | ||
|
||
async run(projects) { | ||
log.warning(dedent` | ||
In most cases, 'yarn kbn clean' is all that should be needed to recover a consistent state when | ||
problems arise. If you need to use this command, please let us know, as it should not be necessary. | ||
`); | ||
|
||
const toDelete = []; | ||
for (const project of projects.values()) { | ||
if (await isDirectory(project.nodeModulesLocation)) { | ||
toDelete.push({ | ||
cwd: project.path, | ||
pattern: relative(project.path, project.nodeModulesLocation), | ||
}); | ||
} | ||
|
||
if (await isDirectory(project.targetLocation)) { | ||
toDelete.push({ | ||
cwd: project.path, | ||
pattern: relative(project.path, project.targetLocation), | ||
}); | ||
} | ||
|
||
const { extraPatterns } = project.getCleanConfig(); | ||
if (extraPatterns) { | ||
toDelete.push({ | ||
cwd: project.path, | ||
pattern: extraPatterns, | ||
}); | ||
} | ||
} | ||
|
||
// Runs Bazel hard clean | ||
await runBazel(['clean', '--expunge']); | ||
log.success('Hard cleaned bazel'); | ||
|
||
// Deletes Bazel Cache Folders | ||
await del([await getBazelDiskCacheFolder(), await getBazelRepositoryCacheFolder()], { | ||
force: true, | ||
}); | ||
log.success('Removed disk caches'); | ||
|
||
if (toDelete.length === 0) { | ||
return; | ||
} | ||
|
||
/** | ||
* In order to avoid patterns like `/build` in packages from accidentally | ||
* impacting files outside the package we use `process.chdir()` to change | ||
* the cwd to the package and execute `del()` without the `force` option | ||
* so it will check that each file being deleted is within the package. | ||
* | ||
* `del()` does support a `cwd` option, but it's only for resolving the | ||
* patterns and does not impact the cwd check. | ||
*/ | ||
const originalCwd = process.cwd(); | ||
try { | ||
for (const { pattern, cwd } of toDelete) { | ||
process.chdir(cwd); | ||
const promise = del(pattern); | ||
|
||
if (log.wouldLogLevel('info')) { | ||
ora.promise(promise, relative(originalCwd, join(cwd, String(pattern)))); | ||
} | ||
|
||
await promise; | ||
} | ||
} finally { | ||
process.chdir(originalCwd); | ||
} | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* and the Server Side Public License, v 1; you may not use this file except in | ||
* compliance with, at your election, the Elastic License or the Server Side | ||
* Public License, v 1. | ||
*/ | ||
|
||
import { dirname, resolve } from 'path'; | ||
import { spawn } from '../child_process'; | ||
|
||
async function rawRunBazelInfoRepoCache() { | ||
const { stdout: bazelRepositoryCachePath } = await spawn('bazel', ['info', 'repository_cache'], { | ||
stdio: 'pipe', | ||
}); | ||
return bazelRepositoryCachePath; | ||
} | ||
|
||
export async function getBazelDiskCacheFolder() { | ||
return resolve(dirname(await rawRunBazelInfoRepoCache()), 'disk-cache'); | ||
} | ||
|
||
export async function getBazelRepositoryCacheFolder() { | ||
return await rawRunBazelInfoRepoCache(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* and the Server Side Public License, v 1; you may not use this file except in | ||
* compliance with, at your election, the Elastic License or the Server Side | ||
* Public License, v 1. | ||
*/ | ||
|
||
import chalk from 'chalk'; | ||
import execa from 'execa'; | ||
import * as Rx from 'rxjs'; | ||
import { tap } from 'rxjs/operators'; | ||
import { observeLines } from '@kbn/dev-utils/stdio'; | ||
import { spawn } from '../child_process'; | ||
import { log } from '../log'; | ||
|
||
export async function runBazel(bazelArgs: string[], runOpts: execa.Options = {}) { | ||
// Force logs to pipe in order to control the output of them | ||
const bazelOpts: execa.Options = { | ||
...runOpts, | ||
stdio: 'pipe', | ||
}; | ||
|
||
const bazelProc = spawn('bazel', bazelArgs, bazelOpts); | ||
|
||
const bazelLogs$ = new Rx.Subject<string>(); | ||
|
||
// Bazel outputs machine readable output into stdout and human readable output goes to stderr. | ||
// Therefore we need to get both. In order to get errors we need to parse the actual text line | ||
const bazelLogSubscription = Rx.merge( | ||
observeLines(bazelProc.stdout!).pipe( | ||
tap((line) => log.info(`${chalk.cyan('[bazel]')} ${line}`)) | ||
), | ||
observeLines(bazelProc.stderr!).pipe( | ||
tap((line) => log.info(`${chalk.cyan('[bazel]')} ${line}`)) | ||
) | ||
).subscribe(bazelLogs$); | ||
|
||
// Wait for process and logs to finish, unsubscribing in the end | ||
await bazelProc; | ||
await bazelLogs$.toPromise(); | ||
await bazelLogSubscription.unsubscribe(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.