aws-delivlib
Version:
A fabulous library for defining continuous pipelines for building, testing and releasing code libraries.
106 lines • 9.03 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const path_1 = __importDefault(require("path"));
const changelog_parser_1 = __importDefault(require("changelog-parser"));
const octokit_1 = require("octokit");
if (!process.env.GITHUB_TOKEN) {
throw new Error('GITHUB_TOKEN is required');
}
if (!process.env.GITHUB_REPO) {
throw new Error('GITHUB_REPO is required');
}
if (!process.env.GITHUB_OWNER) {
throw new Error('GITHUB_OWNER is required');
}
const build_manifest = process.env.BUILD_MANIFEST || './build.json';
const changelog_file = process.env.CHANGELOG || './CHANGELOG.md';
const release_notes_file = process.env.RELEASE_NOTES || './RELEASE_NOTES.md';
const client = new octokit_1.Octokit({ auth: process.env.GITHUB_TOKEN });
const owner = process.env.GITHUB_OWNER;
const repo = process.env.GITHUB_REPO;
async function read_release_notes() {
if (!(0, fs_1.existsSync)(release_notes_file)) {
return undefined;
}
return fs_1.promises.readFile(release_notes_file, { encoding: 'utf8' });
}
async function read_changelog(version) {
if (!(0, fs_1.existsSync)(changelog_file)) {
return undefined;
}
const changelog = await (0, changelog_parser_1.default)(changelog_file);
const entry = (changelog.versions || []).find((item) => item.version === version);
if (!entry) {
throw new Error(`No changelog entry found for version ${version} in ${changelog_file}`);
}
return entry.body;
}
async function main() {
var _a;
const manifest = JSON.parse(await fs_1.promises.readFile(path_1.default.resolve(process.cwd(), build_manifest), 'utf-8'));
const tag_name = `v${manifest.version}`;
const commit = manifest.commit || undefined;
console.log(`Checking if release ${tag_name} already exists...`);
let release = (_a = (await client.rest.repos.getReleaseByTag({
owner, repo, tag: tag_name,
}).catch((cause) => {
if (cause.status === 404) {
return Promise.resolve(undefined);
}
else {
return Promise.reject(cause);
}
}))) === null || _a === void 0 ? void 0 : _a.data;
if (release != null) {
console.warn(`️⚠️ Release '${tag_name}' already exists. Release notes will not be updated.`);
}
else {
console.log('Reading release notes...');
let release_notes = await read_release_notes();
if (!release_notes) {
console.log('No release notes found... Reading changelog...');
release_notes = await read_changelog(manifest.version);
}
release = (await client.rest.repos.createRelease({
owner,
repo,
tag_name,
name: tag_name,
target_commitish: commit,
body: release_notes,
})).data;
}
console.log('Uploading assets...');
for (const assetPath of process.argv.slice(2)) {
const assetName = path_1.default.basename(assetPath);
if (release.assets.some((asset) => asset.name === assetName)) {
console.warn(`⚠️ Release '${tag_name}' already has an asset named '${assetName}'. Leaving it as-is.`);
continue;
}
console.log(`Uploading asset '${assetName}' from ${assetPath}`);
await client.rest.repos.uploadReleaseAsset({
owner,
repo,
release_id: release.id,
name: assetName,
// Note: Cheating here to send the data in streamng mode.
// When doing so, we need to specify the content-length header.
// See: https://github.com/octokit/octokit.js/discussions/2087
data: (0, fs_1.createReadStream)(assetPath),
headers: {
'content-type': 'application/octet-stream',
'content-length': (await fs_1.promises.stat(assetPath)).size,
},
});
}
console.log('✅ done');
}
main().catch(e => {
console.error('❌', e);
process.exit(1);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlbGVhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjcmVhdGUtcmVsZWFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUFrRTtBQUNsRSxnREFBd0I7QUFDeEIsd0VBQThDO0FBQzlDLHFDQUFrQztBQUVsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7SUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Q0FBRTtBQUMvRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7SUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7Q0FBRTtBQUM3RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7SUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Q0FBRTtBQUUvRSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUM7QUFDcEUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUM7QUFDakUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxvQkFBb0IsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBQ3ZDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0FBRXJDLEtBQUssVUFBVSxrQkFBa0I7SUFDL0IsSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLGtCQUFrQixDQUFDLEVBQUU7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