gbruce
Version:
gitBruce CLI for Bruce Web team
59 lines (58 loc) • 2.9 kB
JavaScript
import inquirer from 'inquirer';
import { git, information } from '../utils/index.js';
export const create = async () => {
const selectedBaseBranch = 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 = await inquirer.prompt({
name: 'ticket_number',
type: 'number',
message: 'Write the number of your ticket : ',
default() {
return '1337';
}
});
const branchName = 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 }) => {
const baseBranch = b !== null && b !== void 0 ? 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 }) => {
const currentBranch = await git.branch(['-a']).then(({ current }) => current);
const branchToPush = b !== null && b !== void 0 ? 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 }) => {
const selectedBaseBranch = 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 }));
};