gbruce
Version:
gitBruce CLI for Bruce Web team
82 lines (66 loc) • 2.82 kB
text/typescript
import inquirer from 'inquirer'
import { git, information } from '../utils/index.js'
export const create = async () => {
const selectedBaseBranch: { base_branch: string } = await inquirer.prompt({
name: 'base_branch',
type: 'input',
message: 'Specify the base branch of the repo (press `enter` for default): ',
default() {
return 'development'
}
})
const selectedTicketNumber: { ticket_number: number } = await inquirer.prompt({
name: 'ticket_number',
type: 'number',
message: 'Write the number of your ticket : ',
default() {
return '1337'
}
})
const branchName: { name: string } = await inquirer.prompt({
name: 'name',
type: 'input',
message: 'Write the name of the new branch (Ex: `ma nouvelle branche`): ',
})
await git.checkout(selectedBaseBranch.base_branch)
await git.pull(selectedBaseBranch.base_branch).then(() => information.git_pull_success(selectedBaseBranch.base_branch))
await git.checkout(['-b', `BRC-${selectedTicketNumber.ticket_number}-${branchName.name.trim().replaceAll(' ', '-')}` ]).then(
() => information.git_create_branch_success({ ticketNumber: selectedTicketNumber.ticket_number, branchName: branchName.name })
)
}
export const rebase = async ({ b }: { b?: string }) => {
const baseBranch = b ?? 'development'
const currentBranch = await git.branch(['-a']).then(({ current }) => current)
await git.checkout(baseBranch)
await git.pull(baseBranch)
await git.checkout(currentBranch)
await git.rebase([baseBranch]).then(
() => information.git_rebase_success({ currentBranch, baseBranch })
)
}
export const push = async ({ b, f, displayMessage = true }: { b?: string; f?: boolean; displayMessage?: boolean; }) => {
const currentBranch = await git.branch(['-a']).then(({ current }) => current)
const branchToPush = b ?? currentBranch
const remoteBranchExist = await git.listRemote(['origin', branchToPush]).then((response) => response)
await git.checkout(branchToPush)
remoteBranchExist && !f && await git.pull('origin', branchToPush)
await git.push([f ? '-f' : '-u', 'origin', branchToPush]).then(
() => displayMessage && information.git_branch_push_success({ branchToPush })
)
}
export const pullAndRebaser = async ({ currentBranch }: { currentBranch: string }) => {
const selectedBaseBranch: { base_branch: string } = await inquirer.prompt({
name: 'base_branch',
type: 'input',
message: 'Specify the branch you want to pull and rebase to (press `enter` for default): ',
default() {
return 'development'
}
})
await git.checkout(selectedBaseBranch.base_branch)
await git.pull(selectedBaseBranch.base_branch)
await git.checkout(currentBranch)
await git.rebase([selectedBaseBranch.base_branch]).then(
() => information.git_rebase_success({ currentBranch, baseBranch: selectedBaseBranch.base_branch })
)
}