diff --git a/release-notes/v2.0.5.md b/release-notes/v2.0.5.md new file mode 100644 index 0000000..0d4011b --- /dev/null +++ b/release-notes/v2.0.5.md @@ -0,0 +1,5 @@ +## Highlights + +- The Firefox package no longer requests a permission unsupported by Firefox. +- Popup operation errors and the language selector are localized and use the extension's visual style. +- The release includes the signed XPI and `updates.json` for GitHub-hosted Firefox updates. diff --git a/scripts/publish-firefox-github-release.sh b/scripts/publish-firefox-github-release.sh index cb51230..b655481 100755 --- a/scripts/publish-firefox-github-release.sh +++ b/scripts/publish-firefox-github-release.sh @@ -7,6 +7,7 @@ cd "$ROOT_DIR" REPOSITORY="mirivlad/verstak-browser-extension" SOURCE_DIR="${VERSTAK_FIREFOX_SOURCE_DIR:-dist/firefox}" RELEASE_DIR="${VERSTAK_FIREFOX_RELEASE_DIR:-release/firefox}" +RELEASE_NOTES_DIR="${VERSTAK_RELEASE_NOTES_DIR:-release-notes}" GIT_BIN="${GIT_BIN:-git}" GH_BIN="${GH_BIN:-gh}" @@ -57,12 +58,21 @@ fi if "$GH_BIN" release view "$TAG" --repo "$REPOSITORY" >/dev/null 2>&1; then "$GH_BIN" release upload "$TAG" "$XPI" "$UPDATES" --repo "$REPOSITORY" --clobber else + NOTES_FILE="$RELEASE_NOTES_DIR/$TAG.md" + if [[ ! -s "$NOTES_FILE" ]]; then + echo "ERROR: human-readable release notes are required: $NOTES_FILE" >&2 + exit 1 + fi + + RELEASE_OPTIONS=(--notes-file "$NOTES_FILE" --generate-notes --latest --verify-tag) + PREVIOUS_TAG="$("$GIT_BIN" describe --tags --abbrev=0 "${HEAD}^" 2>/dev/null || true)" + if [[ -n "$PREVIOUS_TAG" ]]; then + RELEASE_OPTIONS+=(--notes-start-tag "$PREVIOUS_TAG") + fi "$GH_BIN" release create "$TAG" "$XPI" "$UPDATES" \ --repo "$REPOSITORY" \ --title "Verstak Browser Extension $VERSION" \ - --generate-notes \ - --latest \ - --verify-tag + "${RELEASE_OPTIONS[@]}" fi echo "GitHub release:" diff --git a/scripts/test-firefox-github-release.js b/scripts/test-firefox-github-release.js index 2943f8c..e1dea25 100644 --- a/scripts/test-firefox-github-release.js +++ b/scripts/test-firefox-github-release.js @@ -43,6 +43,9 @@ assert.match(publisher, /release create/); assert.match(publisher, /release upload/); assert.match(publisher, /--clobber/); assert.match(publisher, /--latest/); +assert.match(publisher, /--notes-file/); +assert.match(publisher, /--generate-notes/); +assert.match(publisher, /--notes-start-tag/); const genericPublisher = fs.readFileSync('scripts/publish-github-release.sh', 'utf8'); assert.match(genericPublisher, /publish-firefox-github-release\.sh/);