diff --git a/scripts/prepare-package-for-release.js b/scripts/prepare-package-for-release.js index 4f89743c618827..f9c4c610762faf 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${version} 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..456399318994db 100644 --- a/scripts/release-utils.js +++ b/scripts/release-utils.js @@ -111,8 +111,15 @@ function generateiOSArtifacts( return tarballOutputPath; } +function checkIfTagExists(version) { + const {code, stdout, stderr} = exec(`git tag -l`); + const tags = new Set(stdout.split('\n')); + return tags.has(`v${version}`); +} + module.exports = { generateAndroidArtifacts, generateiOSArtifacts, publishAndroidArtifactsToMaven, + checkIfTagExists, };