get-last-major-for-master.js 962 B

1234567891011121314151617181920212223242526272829
  1. const { GitProcess } = require('dugite')
  2. const path = require('path')
  3. const semver = require('semver')
  4. const gitDir = path.resolve(__dirname, '..')
  5. async function determineNextMajorForMaster () {
  6. let branchNames
  7. const result = await GitProcess.exec(['branch', '-a', '--remote', '--list', 'origin/[0-9]-[0-9]-x'], gitDir)
  8. if (result.exitCode === 0) {
  9. branchNames = result.stdout.trim().split('\n')
  10. const filtered = branchNames.map(b => b.replace('origin/', ''))
  11. return getNextReleaseBranch(filtered)
  12. } else {
  13. throw new Error('Release branches could not be fetched.')
  14. }
  15. }
  16. function getNextReleaseBranch (branches) {
  17. const converted = branches.map(b => b.replace(/-/g, '.').replace('x', '0'))
  18. const next = converted.reduce((v1, v2) => {
  19. return semver.gt(v1, v2) ? v1 : v2
  20. })
  21. return parseInt(next.split('.')[0], 10)
  22. }
  23. determineNextMajorForMaster().then(console.info).catch((err) => {
  24. console.error(err)
  25. process.exit(1)
  26. })