UNPKG

regit-cli

Version:
66 lines (53 loc) 1.69 kB
import { Command } from 'commander' import { branchPreview } from '../../const.js' import { assertCurrentBranchIsClean, mergeBranch, pushBranch, warmupGitRepo, } from '../../services/gitHelpers.js' import { assertPreviewExists, promptSelectSinglePreview, } from '../../services/previewHelpers.js' import { promptSelectNextVersion, startRelease, } from '../../services/releaseHelpers.js' import { logger } from '../../services/logger.js' const releasePreviewWithName = async (name: string) => { await warmupGitRepo() assertPreviewExists(name) const previewBranchName = `${branchPreview}${name}` const versionToUse = await promptSelectNextVersion( 'What version do you want to release?' ) const { name: releaseBranchName } = await startRelease(versionToUse) await mergeBranch(previewBranchName) logger.success( `Preview ${previewBranchName} merged into ${releaseBranchName}` ) await pushBranch(releaseBranchName) } const releasePreviewWithPrompt = async () => { const selectedPreview = await promptSelectSinglePreview( 'Select preview to release' ) const previewName = selectedPreview.replace(branchPreview, '') await releasePreviewWithName(previewName) } const action = async (name?: string) => { await assertCurrentBranchIsClean() if (name) { await releasePreviewWithName(name) } else { await releasePreviewWithPrompt() } } export default (program: Command) => { program .command('release') .argument('[name]', 'Name') .description('Create a release branch from a preview branch') .action(action) }