@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
69 lines • 9.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.nugetLogin = nugetLogin;
exports.uploadDotnetPackages = uploadDotnetPackages;
const parallel_shell_1 = require("./parallel-shell");
const files_1 = require("../files");
const shell_1 = require("../shell");
async function nugetLogin(login, usageDir) {
// NuGet.Config MUST live in the current directory or in the home directory, and there is no environment
// variable to configure its location.
await writeNuGetConfigFile(usageDir.cwdFile('NuGet.Config'), login);
}
async function uploadDotnetPackages(packages, usageDir) {
await usageDir.copyCwdFileHere('NuGet.Config');
await (0, parallel_shell_1.parallelShell)(packages, async (pkg, output) => {
console.log(`⏳ ${pkg}`);
await (0, shell_1.shell)(['dotnet', 'nuget', 'push',
pkg,
'--source', 'CodeArtifact',
'--no-symbols',
'--force-english-output',
'--disable-buffering',
'--timeout', '600',
'--skip-duplicate'], {
outputs: [output],
});
console.log(`✅ ${pkg}`);
}, (pkg, output) => {
if (output.toString().includes('Conflict')) {
console.log(`❌ ${pkg}: already exists. Skipped.`);
return 'skip';
}
if (output.includes('System.Threading.AbandonedMutexException')) {
console.log(`♻️ ${pkg}: AbandonedMutexException. Probably a sign of throttling, retrying.`);
return 'retry';
}
if (output.includes('Too Many Requests')) {
console.log(`♻️ ${pkg}: Too many requests. Retrying.`);
return 'retry';
}
if (output.includes('System.IO.IOException: The system cannot open the device or file specified.')) {
console.log(`♻️ ${pkg}: Some error that we've seen before as a result of throttling. Retrying.`);
return 'retry';
}
return 'fail';
});
}
async function writeNuGetConfigFile(filename, login) {
// `dotnet nuget push` has an `--api-key` parameter, but CodeArtifact
// does not support that. We must authenticate with Basic auth.
await (0, files_1.writeFile)(filename, `<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="CodeArtifact" value="${login.nugetEndpoint}v3/index.json" />
</packageSources>
<activePackageSource>
<add key="CodeArtifact" value="${login.nugetEndpoint}v3/index.json" />
</activePackageSource>
<packageSourceCredentials>
<CodeArtifact>
<add key="Username" value="aws" />
<add key="ClearTextPassword" value="${login.authToken}" />
</CodeArtifact>
</packageSourceCredentials>
</configuration>`);
}
// NuGet.Config in current directory
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJudWdldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLGdDQUlDO0FBRUQsb0RBc0NDO0FBakRELHFEQUFpRDtBQUVqRCxvQ0FBcUM7QUFDckMsb0NBQWlDO0FBRTFCLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBdUIsRUFBRSxRQUFrQjtJQUMxRSx3R0FBd0c7SUFDeEcsc0NBQXNDO0lBQ3RDLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsUUFBa0I7SUFDL0UsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sSUFBQSw4QkFBYSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBQSxhQUFLLEVBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU07WUFDcEMsR0FBRztZQUNILFVBQVUsRUFBRSxjQUFjO1lBQzFCLGNBQWM7WUFDZCx3QkFBd0I7WUFDeEIscUJBQXFCO1lBQ3JCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGtCQUFrQixDQUFDLEVBQUU7WUFDckIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNkLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLDRCQUE0QixDQUFDLENBQUM7WUFDbEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFLENBQUM7WUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcscUVBQXFFLENBQUMsQ0FBQztZQUM1RixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsNkVBQTZFLENBQUMsRUFBRSxDQUFDO1lBQ25HLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLDBFQUEwRSxDQUFDLENBQUM7WUFDakcsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLEtBQXVCO0lBQzNFLHFFQUFxRTtJQUNyRSwrREFBK0Q7SUFDL0QsTUFBTSxJQUFBLGlCQUFTLEVBQUMsUUFBUSxFQUFFOzs7O3FDQUlTLEtBQUssQ0FBQyxhQUFhOzs7cUNBR25CLEtBQUssQ0FBQyxhQUFhOzs7Ozs4Q0FLVixLQUFLLENBQUMsU0FBUzs7O2lCQUc1QyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELG9DQUFvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgTG9naW5JbmZvcm1hdGlvbiB9IGZyb20gJy4vY29kZWFydGlmYWN0JztcbmltcG9ydCB7IHBhcmFsbGVsU2hlbGwgfSBmcm9tICcuL3BhcmFsbGVsLXNoZWxsJztcbmltcG9ydCB0eXBlIHsgVXNhZ2VEaXIgfSBmcm9tICcuL3VzYWdlLWRpcic7XG5pbXBvcnQgeyB3cml0ZUZpbGUgfSBmcm9tICcuLi9maWxlcyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4uL3NoZWxsJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG51Z2V0TG9naW4obG9naW46IExvZ2luSW5mb3JtYXRpb24sIHVzYWdlRGlyOiBVc2FnZURpcikge1xuICAvLyBOdUdldC5Db25maWcgTVVTVCBsaXZlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvciBpbiB0aGUgaG9tZSBkaXJlY3RvcnksIGFuZCB0aGVyZSBpcyBubyBlbnZpcm9ubWVudFxuICAvLyB2YXJpYWJsZSB0byBjb25maWd1cmUgaXRzIGxvY2F0aW9uLlxuICBhd2FpdCB3cml0ZU51R2V0Q29uZmlnRmlsZSh1c2FnZURpci5jd2RGaWxlKCdOdUdldC5Db25maWcnKSwgbG9naW4pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBsb2FkRG90bmV0UGFja2FnZXMocGFja2FnZXM6IHN0cmluZ1tdLCB1c2FnZURpcjogVXNhZ2VEaXIpIHtcbiAgYXdhaXQgdXNhZ2VEaXIuY29weUN3ZEZpbGVIZXJlKCdOdUdldC5Db25maWcnKTtcblxuICBhd2FpdCBwYXJhbGxlbFNoZWxsKHBhY2thZ2VzLCBhc3luYyAocGtnLCBvdXRwdXQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhg4o+zICR7cGtnfWApO1xuXG4gICAgYXdhaXQgc2hlbGwoWydkb3RuZXQnLCAnbnVnZXQnLCAncHVzaCcsXG4gICAgICBwa2csXG4gICAgICAnLS1zb3VyY2UnLCAnQ29kZUFydGlmYWN0JyxcbiAgICAgICctLW5vLXN5bWJvbHMnLFxuICAgICAgJy0tZm9yY2UtZW5nbGlzaC1vdXRwdXQnLFxuICAgICAgJy0tZGlzYWJsZS1idWZmZXJpbmcnLFxuICAgICAgJy0tdGltZW91dCcsICc2MDAnLFxuICAgICAgJy0tc2tpcC1kdXBsaWNhdGUnXSwge1xuICAgICAgb3V0cHV0czogW291dHB1dF0sXG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZyhg4pyFICR7cGtnfWApO1xuICB9LFxuICAocGtnLCBvdXRwdXQpID0+IHtcbiAgICBpZiAob3V0cHV0LnRvU3RyaW5nKCkuaW5jbHVkZXMoJ0NvbmZsaWN0JykpIHtcbiAgICAgIGNvbnNvbGUubG9nKGDinYwgJHtwa2d9OiBhbHJlYWR5IGV4aXN0cy4gU2tpcHBlZC5gKTtcbiAgICAgIHJldHVybiAnc2tpcCc7XG4gICAgfVxuICAgIGlmIChvdXRwdXQuaW5jbHVkZXMoJ1N5c3RlbS5UaHJlYWRpbmcuQWJhbmRvbmVkTXV0ZXhFeGNlcHRpb24nKSkge1xuICAgICAgY29uc29sZS5sb2coYOKZu++4jyAke3BrZ306IEFiYW5kb25lZE11dGV4RXhjZXB0aW9uLiBQcm9iYWJseSBhIHNpZ24gb2YgdGhyb3R0bGluZywgcmV0cnlpbmcuYCk7XG4gICAgICByZXR1cm4gJ3JldHJ5JztcbiAgICB9XG4gICAgaWYgKG91dHB1dC5pbmNsdWRlcygnVG9vIE1hbnkgUmVxdWVzdHMnKSkge1xuICAgICAgY29uc29sZS5sb2coYOKZu++4jyAke3BrZ306IFRvbyBtYW55IHJlcXVlc3RzLiBSZXRyeWluZy5gKTtcbiAgICAgIHJldHVybiAncmV0cnknO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LmluY2x1ZGVzKCdTeXN0ZW0uSU8uSU9FeGNlcHRpb246IFRoZSBzeXN0ZW0gY2Fubm90IG9wZW4gdGhlIGRldmljZSBvciBmaWxlIHNwZWNpZmllZC4nKSkge1xuICAgICAgY29uc29sZS5sb2coYOKZu++4jyAke3BrZ306IFNvbWUgZXJyb3IgdGhhdCB3ZSd2ZSBzZWVuIGJlZm9yZSBhcyBhIHJlc3VsdCBvZiB0aHJvdHRsaW5nLiBSZXRyeWluZy5gKTtcbiAgICAgIHJldHVybiAncmV0cnknO1xuICAgIH1cbiAgICByZXR1cm4gJ2ZhaWwnO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVOdUdldENvbmZpZ0ZpbGUoZmlsZW5hbWU6IHN0cmluZywgbG9naW46IExvZ2luSW5mb3JtYXRpb24pIHtcbiAgLy8gYGRvdG5ldCBudWdldCBwdXNoYCBoYXMgYW4gYC0tYXBpLWtleWAgcGFyYW1ldGVyLCBidXQgQ29kZUFydGlmYWN0XG4gIC8vIGRvZXMgbm90IHN1cHBvcnQgdGhhdC4gV2UgbXVzdCBhdXRoZW50aWNhdGUgd2l0aCBCYXNpYyBhdXRoLlxuICBhd2FpdCB3cml0ZUZpbGUoZmlsZW5hbWUsIGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz5cbjxjb25maWd1cmF0aW9uPlxuICA8cGFja2FnZVNvdXJjZXM+XG4gICAgPGFkZCBrZXk9XCJudWdldC5vcmdcIiB2YWx1ZT1cImh0dHBzOi8vYXBpLm51Z2V0Lm9yZy92My9pbmRleC5qc29uXCIgcHJvdG9jb2xWZXJzaW9uPVwiM1wiIC8+XG4gICAgPGFkZCBrZXk9XCJDb2RlQXJ0aWZhY3RcIiB2YWx1ZT1cIiR7bG9naW4ubnVnZXRFbmRwb2ludH12My9pbmRleC5qc29uXCIgLz5cbiAgPC9wYWNrYWdlU291cmNlcz5cbiAgPGFjdGl2ZVBhY2thZ2VTb3VyY2U+XG4gICAgPGFkZCBrZXk9XCJDb2RlQXJ0aWZhY3RcIiB2YWx1ZT1cIiR7bG9naW4ubnVnZXRFbmRwb2ludH12My9pbmRleC5qc29uXCIgLz5cbiAgPC9hY3RpdmVQYWNrYWdlU291cmNlPlxuICA8cGFja2FnZVNvdXJjZUNyZWRlbnRpYWxzPlxuICAgIDxDb2RlQXJ0aWZhY3Q+XG4gICAgICAgIDxhZGQga2V5PVwiVXNlcm5hbWVcIiB2YWx1ZT1cImF3c1wiIC8+XG4gICAgICAgIDxhZGQga2V5PVwiQ2xlYXJUZXh0UGFzc3dvcmRcIiB2YWx1ZT1cIiR7bG9naW4uYXV0aFRva2VufVwiIC8+XG4gICAgICA8L0NvZGVBcnRpZmFjdD5cbiAgPC9wYWNrYWdlU291cmNlQ3JlZGVudGlhbHM+XG48L2NvbmZpZ3VyYXRpb24+YCk7XG59XG5cbi8vIE51R2V0LkNvbmZpZyBpbiBjdXJyZW50IGRpcmVjdG9yeVxuIl19