diff --git a/package.json b/package.json index 02db42d..eba744f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "AGPL-3.0-or-later", "scripts": { "build": "node scripts/build-extension.js", - "test": "node scripts/test-hostname.js && node scripts/test-activity-tracker.js && node scripts/test-protocol.js && node scripts/test-i18n.js && node scripts/test-popup-settings.js && node scripts/test-popup-catalog-fallback.js && node scripts/test-background-i18n.js", + "test": "node scripts/test-hostname.js && node scripts/test-activity-tracker.js && node scripts/test-protocol.js && node scripts/test-i18n.js && node scripts/test-popup-settings.js && node scripts/test-popup-catalog-fallback.js && node scripts/test-background-i18n.js && node scripts/test-firefox-github-release.js", "sign:firefox": "./scripts/sign-firefox-xpi.sh", "release:firefox": "./scripts/release-firefox-xpi.sh", "release:package": "./scripts/package-release.sh" diff --git a/scripts/firefox-github-release.js b/scripts/firefox-github-release.js new file mode 100644 index 0000000..d4fac01 --- /dev/null +++ b/scripts/firefox-github-release.js @@ -0,0 +1,40 @@ +const fs = require('fs'); + +const REPOSITORY = 'mirivlad/verstak-browser-extension'; + +function releaseTag(version) { + return `v${version}`; +} + +function releaseAssetURL(version, assetName) { + return `https://github.com/${REPOSITORY}/releases/download/${releaseTag(version)}/${assetName}`; +} + +function updateManifest(addonID, version, assetName) { + return { + addons: { + [addonID]: { + updates: [{ + version, + update_link: releaseAssetURL(version, assetName), + }], + }, + }, + }; +} + +function writeUpdates(addonID, version, assetName, outputPath) { + fs.writeFileSync(outputPath, `${JSON.stringify(updateManifest(addonID, version, assetName), null, 2)}\n`); +} + +if (require.main === module) { + const [, , command, addonID, version, assetName, outputPath] = process.argv; + if (command !== 'write-updates' || !addonID || !version || !assetName || !outputPath) { + console.error('usage: node scripts/firefox-github-release.js write-updates '); + process.exitCode = 2; + } else { + writeUpdates(addonID, version, assetName, outputPath); + } +} + +module.exports = { REPOSITORY, releaseTag, releaseAssetURL, updateManifest, writeUpdates }; diff --git a/scripts/test-firefox-github-release.js b/scripts/test-firefox-github-release.js new file mode 100644 index 0000000..338a3f9 --- /dev/null +++ b/scripts/test-firefox-github-release.js @@ -0,0 +1,24 @@ +#!/usr/bin/env node +const assert = require('assert'); +const release = require('./firefox-github-release'); + +const version = '2.0.2'; +const asset = 'verstak-firefox-2.0.2.xpi'; + +assert.equal(release.releaseTag(version), 'v2.0.2'); +assert.equal( + release.releaseAssetURL(version, asset), + 'https://github.com/mirivlad/verstak-browser-extension/releases/download/v2.0.2/verstak-firefox-2.0.2.xpi', +); +assert.deepEqual(release.updateManifest('verstak-bridge@verstak.app', version, asset), { + addons: { + 'verstak-bridge@verstak.app': { + updates: [{ + version: '2.0.2', + update_link: 'https://github.com/mirivlad/verstak-browser-extension/releases/download/v2.0.2/verstak-firefox-2.0.2.xpi', + }], + }, + }, +}); + +console.log('Firefox GitHub release metadata tests passed');