jsii-release
Version:
Release jsii modules to multiple package managers
75 lines • 9.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.nugetLogin = nugetLogin;
exports.uploadDotnetPackages = uploadDotnetPackages;
/* eslint-disable no-console */
const parallel_shell_1 = require("./parallel-shell");
const display_1 = require("../display");
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) {
if (packages.length === 0) {
return;
}
(0, display_1.header)('.NET');
await usageDir.copySelectCwdFileHere('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'], {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29kZWFydGlmYWN0L3N0YWdpbmcvbnVnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxnQ0FJQztBQUVELG9EQTJDQztBQXpERCwrQkFBK0I7QUFDL0IscURBQWlEO0FBRWpELHdDQUFvQztBQUNwQyxvQ0FBcUM7QUFDckMsb0NBQWlDO0FBRzFCLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBdUIsRUFBRSxRQUFrQjtJQUMxRSx3R0FBd0c7SUFDeEcsc0NBQXNDO0lBQ3RDLE1BQU0sb0JBQW9CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsUUFBa0I7SUFDL0UsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsTUFBTSxRQUFRLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckQsTUFBTSxJQUFBLDhCQUFhLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFeEIsTUFBTSxJQUFBLGFBQUssRUFBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTTtZQUNwQyxHQUFHO1lBQ0gsVUFBVSxFQUFFLGNBQWM7WUFDMUIsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixxQkFBcUI7WUFDckIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsa0JBQWtCLENBQUMsRUFBRTtZQUNyQixNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztZQUNsRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxxRUFBcUUsQ0FBQyxDQUFDO1lBQzVGLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLGdDQUFnQyxDQUFDLENBQUM7WUFDdkQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyw2RUFBNkUsQ0FBQyxFQUFFLENBQUM7WUFDbkcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsMEVBQTBFLENBQUMsQ0FBQztZQUNqRyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsS0FBdUI7SUFDM0UscUVBQXFFO0lBQ3JFLCtEQUErRDtJQUMvRCxNQUFNLElBQUEsaUJBQVMsRUFBQyxRQUFRLEVBQUU7Ozs7cUNBSVMsS0FBSyxDQUFDLGFBQWE7OztxQ0FHbkIsS0FBSyxDQUFDLGFBQWE7Ozs7OzhDQUtWLEtBQUssQ0FBQyxTQUFTOzs7aUJBRzVDLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBRUQsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgcGFyYWxsZWxTaGVsbCB9IGZyb20gJy4vcGFyYWxsZWwtc2hlbGwnO1xuaW1wb3J0IHsgTG9naW5JbmZvcm1hdGlvbiB9IGZyb20gJy4uL2NvZGVhcnRpZmFjdC1yZXBvJztcbmltcG9ydCB7IGhlYWRlciB9IGZyb20gJy4uL2Rpc3BsYXknO1xuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSAnLi4vZmlsZXMnO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuLi9zaGVsbCc7XG5pbXBvcnQgeyBVc2FnZURpciB9IGZyb20gJy4uL3VzYWdlLWRpcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBudWdldExvZ2luKGxvZ2luOiBMb2dpbkluZm9ybWF0aW9uLCB1c2FnZURpcjogVXNhZ2VEaXIpIHtcbiAgLy8gTnVHZXQuQ29uZmlnIE1VU1QgbGl2ZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb3IgaW4gdGhlIGhvbWUgZGlyZWN0b3J5LCBhbmQgdGhlcmUgaXMgbm8gZW52aXJvbm1lbnRcbiAgLy8gdmFyaWFibGUgdG8gY29uZmlndXJlIGl0cyBsb2NhdGlvbi5cbiAgYXdhaXQgd3JpdGVOdUdldENvbmZpZ0ZpbGUodXNhZ2VEaXIuY3dkRmlsZSgnTnVHZXQuQ29uZmlnJyksIGxvZ2luKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwbG9hZERvdG5ldFBhY2thZ2VzKHBhY2thZ2VzOiBzdHJpbmdbXSwgdXNhZ2VEaXI6IFVzYWdlRGlyKSB7XG4gIGlmIChwYWNrYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBoZWFkZXIoJy5ORVQnKTtcbiAgYXdhaXQgdXNhZ2VEaXIuY29weVNlbGVjdEN3ZEZpbGVIZXJlKCdOdUdldC5Db25maWcnKTtcblxuICBhd2FpdCBwYXJhbGxlbFNoZWxsKHBhY2thZ2VzLCBhc3luYyAocGtnLCBvdXRwdXQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhg4o+zICR7cGtnfWApO1xuXG4gICAgYXdhaXQgc2hlbGwoWydkb3RuZXQnLCAnbnVnZXQnLCAncHVzaCcsXG4gICAgICBwa2csXG4gICAgICAnLS1zb3VyY2UnLCAnQ29kZUFydGlmYWN0JyxcbiAgICAgICctLW5vLXN5bWJvbHMnLFxuICAgICAgJy0tZm9yY2UtZW5nbGlzaC1vdXRwdXQnLFxuICAgICAgJy0tZGlzYWJsZS1idWZmZXJpbmcnLFxuICAgICAgJy0tdGltZW91dCcsICc2MDAnLFxuICAgICAgJy0tc2tpcC1kdXBsaWNhdGUnXSwge1xuICAgICAgb3V0cHV0LFxuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYOKchSAke3BrZ31gKTtcbiAgfSxcbiAgKHBrZywgb3V0cHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dC50b1N0cmluZygpLmluY2x1ZGVzKCdDb25mbGljdCcpKSB7XG4gICAgICBjb25zb2xlLmxvZyhg4p2MICR7cGtnfTogYWxyZWFkeSBleGlzdHMuIFNraXBwZWQuYCk7XG4gICAgICByZXR1cm4gJ3NraXAnO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LmluY2x1ZGVzKCdTeXN0ZW0uVGhyZWFkaW5nLkFiYW5kb25lZE11dGV4RXhjZXB0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUubG9nKGDimbvvuI8gJHtwa2d9OiBBYmFuZG9uZWRNdXRleEV4Y2VwdGlvbi4gUHJvYmFibHkgYSBzaWduIG9mIHRocm90dGxpbmcsIHJldHJ5aW5nLmApO1xuICAgICAgcmV0dXJuICdyZXRyeSc7XG4gICAgfVxuICAgIGlmIChvdXRwdXQuaW5jbHVkZXMoJ1RvbyBNYW55IFJlcXVlc3RzJykpIHtcbiAgICAgIGNvbnNvbGUubG9nKGDimbvvuI8gJHtwa2d9OiBUb28gbWFueSByZXF1ZXN0cy4gUmV0cnlpbmcuYCk7XG4gICAgICByZXR1cm4gJ3JldHJ5JztcbiAgICB9XG4gICAgaWYgKG91dHB1dC5pbmNsdWRlcygnU3lzdGVtLklPLklPRXhjZXB0aW9uOiBUaGUgc3lzdGVtIGNhbm5vdCBvcGVuIHRoZSBkZXZpY2Ugb3IgZmlsZSBzcGVjaWZpZWQuJykpIHtcbiAgICAgIGNvbnNvbGUubG9nKGDimbvvuI8gJHtwa2d9OiBTb21lIGVycm9yIHRoYXQgd2UndmUgc2VlbiBiZWZvcmUgYXMgYSByZXN1bHQgb2YgdGhyb3R0bGluZy4gUmV0cnlpbmcuYCk7XG4gICAgICByZXR1cm4gJ3JldHJ5JztcbiAgICB9XG4gICAgcmV0dXJuICdmYWlsJztcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlTnVHZXRDb25maWdGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIGxvZ2luOiBMb2dpbkluZm9ybWF0aW9uKSB7XG4gIC8vIGBkb3RuZXQgbnVnZXQgcHVzaGAgaGFzIGFuIGAtLWFwaS1rZXlgIHBhcmFtZXRlciwgYnV0IENvZGVBcnRpZmFjdFxuICAvLyBkb2VzIG5vdCBzdXBwb3J0IHRoYXQuIFdlIG11c3QgYXV0aGVudGljYXRlIHdpdGggQmFzaWMgYXV0aC5cbiAgYXdhaXQgd3JpdGVGaWxlKGZpbGVuYW1lLCBgPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+XG48Y29uZmlndXJhdGlvbj5cbiAgPHBhY2thZ2VTb3VyY2VzPlxuICAgIDxhZGQga2V5PVwibnVnZXQub3JnXCIgdmFsdWU9XCJodHRwczovL2FwaS5udWdldC5vcmcvdjMvaW5kZXguanNvblwiIHByb3RvY29sVmVyc2lvbj1cIjNcIiAvPlxuICAgIDxhZGQga2V5PVwiQ29kZUFydGlmYWN0XCIgdmFsdWU9XCIke2xvZ2luLm51Z2V0RW5kcG9pbnR9djMvaW5kZXguanNvblwiIC8+XG4gIDwvcGFja2FnZVNvdXJjZXM+XG4gIDxhY3RpdmVQYWNrYWdlU291cmNlPlxuICAgIDxhZGQga2V5PVwiQ29kZUFydGlmYWN0XCIgdmFsdWU9XCIke2xvZ2luLm51Z2V0RW5kcG9pbnR9djMvaW5kZXguanNvblwiIC8+XG4gIDwvYWN0aXZlUGFja2FnZVNvdXJjZT5cbiAgPHBhY2thZ2VTb3VyY2VDcmVkZW50aWFscz5cbiAgICA8Q29kZUFydGlmYWN0PlxuICAgICAgICA8YWRkIGtleT1cIlVzZXJuYW1lXCIgdmFsdWU9XCJhd3NcIiAvPlxuICAgICAgICA8YWRkIGtleT1cIkNsZWFyVGV4dFBhc3N3b3JkXCIgdmFsdWU9XCIke2xvZ2luLmF1dGhUb2tlbn1cIiAvPlxuICAgICAgPC9Db2RlQXJ0aWZhY3Q+XG4gIDwvcGFja2FnZVNvdXJjZUNyZWRlbnRpYWxzPlxuPC9jb25maWd1cmF0aW9uPmApO1xufVxuXG4vLyBOdUdldC5Db25maWcgaW4gY3VycmVudCBkaXJlY3RvcnkiXX0=