@ebuka_dev/git-branch-cleaner
Version:
A CLI tool to help manage and clean up Git branches
54 lines (53 loc) • 2.26 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteStaleBranches = deleteStaleBranches;
exports.deleteInteractiveBranches = deleteInteractiveBranches;
const GitService_1 = require("../services/GitService");
const spinner_1 = require("../utils/spinner");
const console_1 = require("../utils/console");
const prompt_1 = require("../utils/prompt");
const chalk_1 = __importDefault(require("chalk"));
async function deleteStaleBranches(branchNames, force = false) {
spinner_1.spinner.start("Deleting branches...");
try {
for (const name of branchNames) {
if (name === "master" || name === "main") {
(0, console_1.logWarning)(`Skipping protected branch: ${name}`);
continue;
}
await GitService_1.gitService.deleteLocalBranch(name, force);
console.log(chalk_1.default.red(`Deleted branch: ${name}` + chalk_1.default.gray("✨")));
}
spinner_1.spinner.succeed("Successfully deleted branches!");
}
catch (error) {
spinner_1.spinner.fail("Failed to delete branches!");
(0, console_1.logError)("Error deleting branches:", error);
}
}
async function deleteInteractiveBranches(force = false) {
spinner_1.spinner.start("Fetching branches...");
try {
const branches = await GitService_1.gitService.getDeletableBranches();
spinner_1.spinner.stop();
if (branches.length === 0) {
(0, console_1.logSuccess)("No branches available to delete!");
return;
}
const selectedBranches = await (0, prompt_1.selectBranches)(branches);
if (selectedBranches.length === 0) {
(0, console_1.logWarning)("No branches selected for deletion.");
return;
}
if (force || await (0, prompt_1.confirmDelete)(selectedBranches)) {
await deleteStaleBranches(selectedBranches, force);
}
}
catch (error) {
spinner_1.spinner.fail("Failed to fetch branches!");
(0, console_1.logError)("Error fetching branches:", error);
}
}