From cc05168c6e2fe2302b7154f7f1ab7c230f499961 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Thu, 10 Nov 2022 12:17:55 +0000 Subject: [PATCH] chore: fail prepare package for release if tag exists --- scripts/prepare-package-for-release.js | 8 ++++++++ scripts/release-utils.js | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/scripts/prepare-package-for-release.js b/scripts/prepare-package-for-release.js index 4f89743c618827..139f1fe0ac3b2e 100755 --- a/scripts/prepare-package-for-release.js +++ b/scripts/prepare-package-for-release.js @@ -21,6 +21,7 @@ const {echo, exec, exit} = require('shelljs'); const yargs = require('yargs'); const {isReleaseBranch, parseVersion} = require('./version-utils'); +const {checkIfTagExists} = require('./release-utils'); const argv = yargs .option('r', { @@ -49,6 +50,13 @@ const releaseVersion = argv.toVersion; const isLatest = argv.latest; const isDryRun = argv.dryRun; +if (checkIfTagExists(releaseVersion)) { + echo(`Tag v${releaseVersion} already exists.`); + echo('You may want to rollback the last commit'); + echo('git reset --hard HEAD~1'); + exit(1); +} + if (branch && !isReleaseBranch(branch) && !isDryRun) { console.error(`This needs to be on a release branch. On branch: ${branch}`); exit(1); diff --git a/scripts/release-utils.js b/scripts/release-utils.js index f2e8cbb6032cd4..81e5ae7b6d3b46 100644 --- a/scripts/release-utils.js +++ b/scripts/release-utils.js @@ -111,8 +111,18 @@ function generateiOSArtifacts( return tarballOutputPath; } +function checkIfTagExists(version) { + const {code, stdout} = exec('git tag -l', {silent: true}); + if (code !== 0) { + throw new Error('Failed to retrieve the list of tags'); + } + const tags = new Set(stdout.split('\n')); + return tags.has(`v${version}`); +} + module.exports = { generateAndroidArtifacts, generateiOSArtifacts, publishAndroidArtifactsToMaven, + checkIfTagExists, };