interactive.js 1.2 KB

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env node
  2. import process from 'node:process'
  3. import { fileURLToPath } from 'node:url'
  4. import pickSemverness from './choose-semverness.js'
  5. import commit from './commit-and-open-pr.js'
  6. import formatChangeLog from './formatChangeLog.js'
  7. import { validateGitStatus, rewindGitHistory } from './getUpToDateRefsFromGitHub.js'
  8. const ROOT = new URL('../../', import.meta.url)
  9. const spawnOptions = { cwd: fileURLToPath(ROOT) }
  10. const deferredReleaseFile = new URL('./.yarn/versions/next.yml', ROOT)
  11. const temporaryChangeLog = new URL('./CHANGELOG.next.md', ROOT)
  12. console.log('Validating local repo status and get previous release info...')
  13. const [LAST_RELEASE_COMMIT, LOCAL_HEAD] = await validateGitStatus(spawnOptions)
  14. try {
  15. console.log('Local git repository is ready, starting release process...')
  16. await pickSemverness(spawnOptions, LAST_RELEASE_COMMIT, deferredReleaseFile, process.env.PACKAGES.split(' '))
  17. console.log('Working on the changelog...')
  18. await formatChangeLog(spawnOptions, LAST_RELEASE_COMMIT, temporaryChangeLog)
  19. console.log('Final step...')
  20. await commit(spawnOptions, deferredReleaseFile, temporaryChangeLog)
  21. } finally {
  22. console.log('Rewinding git history...')
  23. await rewindGitHistory(spawnOptions, LOCAL_HEAD)
  24. }