@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
41 lines • 5.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchPreviousVersion = fetchPreviousVersion;
const rest_1 = require("@octokit/rest");
const semver = require("semver");
async function fetchPreviousVersion(token, options) {
const github = new rest_1.Octokit({ auth: token });
const releases = await github.repos.listReleases({
owner: 'aws',
repo: 'aws-cdk',
});
// this returns a list in descending order, newest releases first
// opts for same major version where possible, falling back otherwise
// to previous major versions.
let previousMVRelease = undefined;
for (const release of releases.data) {
const version = release.name?.replace('v', '');
if (!version) {
continue;
}
// Any old version is fine
if (!options?.majorVersion && !options?.priorTo) {
return version;
}
if (options?.majorVersion && `${semver.major(version)}` === options.majorVersion) {
return version;
}
if (options?.priorTo && semver.lt(version, options?.priorTo) && semver.major(version) === semver.major(options.priorTo)) {
return version;
}
// Otherwise return the most recent version that didn't match any
if (!previousMVRelease) {
previousMVRelease = version;
}
}
if (previousMVRelease) {
return previousMVRelease;
}
throw new Error(`Unable to find previous version given ${JSON.stringify(options)}`);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2l0aHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esb0RBMkNDO0FBOUNELHdDQUF3QztBQUN4QyxpQ0FBaUM7QUFFMUIsS0FBSyxVQUFVLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxPQUd6RDtJQUNDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUMvQyxLQUFLLEVBQUUsS0FBSztRQUNaLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQztJQUVILGlFQUFpRTtJQUNqRSxxRUFBcUU7SUFDckUsOEJBQThCO0lBQzlCLElBQUksaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixTQUFTO1FBQ1gsQ0FBQztRQUVELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsWUFBWSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEgsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9jdG9raXQgfSBmcm9tICdAb2N0b2tpdC9yZXN0JztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQcmV2aW91c1ZlcnNpb24odG9rZW46IHN0cmluZywgb3B0aW9ucz86IHtcbiAgcHJpb3JUbz86IHN0cmluZztcbiAgbWFqb3JWZXJzaW9uPzogc3RyaW5nO1xufSkge1xuICBjb25zdCBnaXRodWIgPSBuZXcgT2N0b2tpdCh7IGF1dGg6IHRva2VuIH0pO1xuICBjb25zdCByZWxlYXNlcyA9IGF3YWl0IGdpdGh1Yi5yZXBvcy5saXN0UmVsZWFzZXMoe1xuICAgIG93bmVyOiAnYXdzJyxcbiAgICByZXBvOiAnYXdzLWNkaycsXG4gIH0pO1xuXG4gIC8vIHRoaXMgcmV0dXJucyBhIGxpc3QgaW4gZGVzY2VuZGluZyBvcmRlciwgbmV3ZXN0IHJlbGVhc2VzIGZpcnN0XG4gIC8vIG9wdHMgZm9yIHNhbWUgbWFqb3IgdmVyc2lvbiB3aGVyZSBwb3NzaWJsZSwgZmFsbGluZyBiYWNrIG90aGVyd2lzZVxuICAvLyB0byBwcmV2aW91cyBtYWpvciB2ZXJzaW9ucy5cbiAgbGV0IHByZXZpb3VzTVZSZWxlYXNlID0gdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHJlbGVhc2Ugb2YgcmVsZWFzZXMuZGF0YSkge1xuICAgIGNvbnN0IHZlcnNpb24gPSByZWxlYXNlLm5hbWU/LnJlcGxhY2UoJ3YnLCAnJyk7XG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBBbnkgb2xkIHZlcnNpb24gaXMgZmluZVxuICAgIGlmICghb3B0aW9ucz8ubWFqb3JWZXJzaW9uICYmICFvcHRpb25zPy5wcmlvclRvKSB7XG4gICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8ubWFqb3JWZXJzaW9uICYmIGAke3NlbXZlci5tYWpvcih2ZXJzaW9uKX1gID09PSBvcHRpb25zLm1ham9yVmVyc2lvbikge1xuICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnByaW9yVG8gJiYgc2VtdmVyLmx0KHZlcnNpb24sIG9wdGlvbnM/LnByaW9yVG8pICYmIHNlbXZlci5tYWpvcih2ZXJzaW9uKSA9PT0gc2VtdmVyLm1ham9yKG9wdGlvbnMucHJpb3JUbykpIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSByZXR1cm4gdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gdGhhdCBkaWRuJ3QgbWF0Y2ggYW55XG4gICAgaWYgKCFwcmV2aW91c01WUmVsZWFzZSkge1xuICAgICAgcHJldmlvdXNNVlJlbGVhc2UgPSB2ZXJzaW9uO1xuICAgIH1cbiAgfVxuICBpZiAocHJldmlvdXNNVlJlbGVhc2UpIHtcbiAgICByZXR1cm4gcHJldmlvdXNNVlJlbGVhc2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIHByZXZpb3VzIHZlcnNpb24gZ2l2ZW4gJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX1gKTtcbn1cbiJdfQ==