From 6861d68f819f2ab527cfceddd2e16b46932711e0 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Thu, 26 Jul 2018 10:39:24 -0700 Subject: [PATCH] Consolidate release version logic --- script/vsts/generate-version.js | 46 +++++++++++++++++++++------------ script/vsts/nightly-release.yml | 2 +- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/script/vsts/generate-version.js b/script/vsts/generate-version.js index 65206d33c..ff51a6cfb 100644 --- a/script/vsts/generate-version.js +++ b/script/vsts/generate-version.js @@ -3,31 +3,43 @@ const request = require('request-promise-native') const repositoryRootPath = path.resolve(__dirname, '..', '..') const appMetadata = require(path.join(repositoryRootPath, 'package.json')) -const baseVersion = appMetadata.version.split('-')[0] -async function generateNightlyVersion () { - const releases = await request({ - url: 'https://api.github.com/repos/atom/atom-nightly-releases/releases', - headers: {'Accept': 'application/vnd.github.v3+json', 'User-Agent': 'Atom Release Build'}, - json: true - }) +const yargs = require('yargs') +const argv = yargs + .usage('Usage: $0 [options]') + .help('help') + .describe('nightly', 'Indicates that a nightly version should be produced') + .wrap(yargs.terminalWidth()) + .argv - let releaseNumber = 0 - if (releases && releases.length > 0) { - const latestRelease = releases.find(r => !r.draft) - const versionMatch = latestRelease.tag_name.match(/^v?(\d+\.\d+\.\d+)-nightly(\d+)$/) +async function getReleaseVersion () { + let releaseVersion = appMetadata.version + if (argv.nightly) { + const releases = await request({ + url: 'https://api.github.com/repos/atom/atom-nightly-releases/releases', + headers: {'Accept': 'application/vnd.github.v3+json', 'User-Agent': 'Atom Release Build'}, + json: true + }) - if (versionMatch && versionMatch[1] === baseVersion) { - releaseNumber = parseInt(versionMatch[2]) + 1 + let releaseNumber = 0 + const baseVersion = appMetadata.version.split('-')[0] + if (releases && releases.length > 0) { + const latestRelease = releases.find(r => !r.draft) + const versionMatch = latestRelease.tag_name.match(/^v?(\d+\.\d+\.\d+)-nightly(\d+)$/) + + if (versionMatch && versionMatch[1] === baseVersion) { + releaseNumber = parseInt(versionMatch[2]) + 1 + } } + + releaseVersion = `${baseVersion}-nightly${releaseNumber}` } // Set our ReleaseVersion build variable and update VSTS' build number to // include the version. Writing these strings to stdout causes VSTS to set // the associated variables. - const generatedVersion = `${baseVersion}-nightly${releaseNumber}` - console.log(`##vso[task.setvariable variable=ReleaseVersion;isOutput=true]${generatedVersion}`) - console.log(`##vso[build.updatebuildnumber]${generatedVersion}+${process.env.BUILD_BUILDNUMBER}`) + console.log(`##vso[task.setvariable variable=ReleaseVersion;isOutput=true]${releaseVersion}`) + console.log(`##vso[build.updatebuildnumber]${releaseVersion}+${process.env.BUILD_BUILDNUMBER}`) } -generateNightlyVersion() +getReleaseVersion() diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index d857c7d43..f1f5eaa51 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -8,7 +8,7 @@ phases: cd script\vsts npm install displayName: npm install - - script: node script\vsts\generate-version.js + - script: node script\vsts\generate-version.js --nightly name: Version # Import OS-specific build definitions