#!/usr/bin/env node const fs = require("fs"); let usage = `Usage: add-release.js PATH TAG [ASSETS...] Updates the release list at PATH by adding a new release (if it does not exist) with the provided TAG and list of ASSETS.`; if (process.argv.length < 4) { console.log(usage); process.exit(2); } let path = process.argv[2]; let tag = process.argv[3]; let assets = process.argv.slice(4); if (assets.length == 0) { console.error("Adding a release with no assets."); } function releaseAlreadyExists(root, tag) { let existing = root["releases"].find((release) => release["tag"] == tag); return existing !== undefined; } fs.readFile(path, "utf8", (err, data) => { if (err) { console.error(err); process.exit(2); } let root = JSON.parse(data); if (releaseAlreadyExists(root, tag)) { console.error(`Release '${tag}' already exists.`); console.error("No changes written."); process.exit(1); } let release = { tag: tag, assets: assets, }; root["releases"].push(release); fs.writeFile(path, JSON.stringify(root, null, 1) + "\n", (err) => { if (err) { console.error(err); process.exit(2); } else { console.error(`Added release ${tag} with assets ${assets}.`); } }); });