29 lines
962 B
JavaScript
29 lines
962 B
JavaScript
const { GitProcess } = require('dugite')
|
|
const path = require('path')
|
|
const semver = require('semver')
|
|
const gitDir = path.resolve(__dirname, '..')
|
|
|
|
async function determineNextMajorForMaster () {
|
|
let branchNames
|
|
const result = await GitProcess.exec(['branch', '-a', '--remote', '--list', 'origin/[0-9]-[0-9]-x'], gitDir)
|
|
if (result.exitCode === 0) {
|
|
branchNames = result.stdout.trim().split('\n')
|
|
const filtered = branchNames.map(b => b.replace('origin/', ''))
|
|
return getNextReleaseBranch(filtered)
|
|
} else {
|
|
throw new Error('Release branches could not be fetched.')
|
|
}
|
|
}
|
|
|
|
function getNextReleaseBranch (branches) {
|
|
const converted = branches.map(b => b.replace(/-/g, '.').replace('x', '0'))
|
|
const next = converted.reduce((v1, v2) => {
|
|
return semver.gt(v1, v2) ? v1 : v2
|
|
})
|
|
return parseInt(next.split('.')[0], 10)
|
|
}
|
|
|
|
determineNextMajorForMaster().then(console.info).catch((err) => {
|
|
console.error(err)
|
|
process.exit(1)
|
|
})
|