@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
31 lines • 3.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findYarnPackages = findYarnPackages;
const path = require("path");
const shell_1 = require("./shell");
/**
* Cache monorepo discovery results, we only want to do this once per run
*/
const YARN_MONOREPO_CACHE = {};
/**
* Return a { name -> directory } packages found in a Yarn monorepo
*
* Cached in YARN_MONOREPO_CACHE.
*/
async function findYarnPackages(root) {
if (!(root in YARN_MONOREPO_CACHE)) {
const outputDataString = JSON.parse(await (0, shell_1.shell)(['yarn', 'workspaces', '--json', 'info'], {
captureStderr: false,
cwd: root,
show: 'error',
})).data;
const output = JSON.parse(outputDataString);
const ret = {};
for (const [k, v] of Object.entries(output)) {
ret[k] = path.join(root, v.location);
}
YARN_MONOREPO_CACHE[root] = ret;
}
return YARN_MONOREPO_CACHE[root];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInlhcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSw0Q0FnQkM7QUE3QkQsNkJBQTZCO0FBQzdCLG1DQUFnQztBQUVoQzs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQXdCLEVBQUUsQ0FBQztBQUVwRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQUFDLElBQVk7SUFDakQsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGdCQUFnQixHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFBLGFBQUssRUFBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2hHLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVCxNQUFNLE1BQU0sR0FBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4vc2hlbGwnO1xuXG4vKipcbiAqIENhY2hlIG1vbm9yZXBvIGRpc2NvdmVyeSByZXN1bHRzLCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBvbmNlIHBlciBydW5cbiAqL1xuY29uc3QgWUFSTl9NT05PUkVQT19DQUNIRTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4vKipcbiAqIFJldHVybiBhIHsgbmFtZSAtPiBkaXJlY3RvcnkgfSBwYWNrYWdlcyBmb3VuZCBpbiBhIFlhcm4gbW9ub3JlcG9cbiAqXG4gKiBDYWNoZWQgaW4gWUFSTl9NT05PUkVQT19DQUNIRS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRZYXJuUGFja2FnZXMocm9vdDogc3RyaW5nKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGlmICghKHJvb3QgaW4gWUFSTl9NT05PUkVQT19DQUNIRSkpIHtcbiAgICBjb25zdCBvdXRwdXREYXRhU3RyaW5nOiBzdHJpbmcgPSBKU09OLnBhcnNlKGF3YWl0IHNoZWxsKFsneWFybicsICd3b3Jrc3BhY2VzJywgJy0tanNvbicsICdpbmZvJ10sIHtcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgICAgY3dkOiByb290LFxuICAgICAgc2hvdzogJ2Vycm9yJyxcbiAgICB9KSkuZGF0YTtcbiAgICBjb25zdCBvdXRwdXQ6IFlhcm5Xb3Jrc3BhY2VzT3V0cHV0ID0gSlNPTi5wYXJzZShvdXRwdXREYXRhU3RyaW5nKTtcblxuICAgIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dCkpIHtcbiAgICAgIHJldFtrXSA9IHBhdGguam9pbihyb290LCB2LmxvY2F0aW9uKTtcbiAgICB9XG4gICAgWUFSTl9NT05PUkVQT19DQUNIRVtyb290XSA9IHJldDtcbiAgfVxuICByZXR1cm4gWUFSTl9NT05PUkVQT19DQUNIRVtyb290XTtcbn1cblxudHlwZSBZYXJuV29ya3NwYWNlc091dHB1dCA9IFJlY29yZDxzdHJpbmcsIHsgbG9jYXRpb246IHN0cmluZyB9PjtcbiJdfQ==