@cosmstack/repoeject
Version:
Interactive CLI tool to safely find and delete old or inactive GitHub repositories. Clean up your GitHub profile by removing abandoned projects, old experiments, and unused forks.
63 lines ⢠2.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteRepositories = deleteRepositories;
const ora_1 = __importDefault(require("ora"));
const chalk_1 = __importDefault(require("chalk"));
const github_1 = require("../utils/github");
const ui_1 = require("../utils/ui");
async function deleteRepositories(repositories, options = { dryRun: false, force: false }) {
const { dryRun = false, force = false } = options;
if (repositories.length === 0) {
console.log(chalk_1.default.yellow("No repositories selected for deletion."));
return;
}
if (dryRun) {
console.log(chalk_1.default.cyan("\nš DRY RUN MODE: No repositories will actually be deleted\n"));
}
if (!force) {
const isConfirmed = await (0, ui_1.confirmDeletion)(repositories);
if (!isConfirmed) {
console.log(chalk_1.default.yellow("\nDeletion cancelled."));
return;
}
}
const spinner = (0, ora_1.default)("Deleting repositories...").start();
const successfullyDeleted = [];
const failedToDelete = [];
for (const repo of repositories) {
const [owner, repoName] = repo.name.split("/");
spinner.text = `Deleting repository ${chalk_1.default.yellow(repo.name)}...`;
try {
if (!dryRun) {
await (0, github_1.deleteRepository)(owner, repoName);
}
successfullyDeleted.push(repo);
}
catch (error) {
failedToDelete.push({
repo,
error: error instanceof Error ? error.message : "Unknown error",
});
}
}
if (dryRun) {
spinner.succeed(`Simulated deletion of ${repositories.length} repositories`);
}
else {
spinner.succeed(`Deleted ${successfullyDeleted.length} repositories`);
}
if (successfullyDeleted.length > 0) {
(0, ui_1.displayDeletionSummary)(successfullyDeleted);
}
if (failedToDelete.length > 0) {
console.log(chalk_1.default.red.bold("\nā Failed to delete some repositories:\n"));
for (const { repo, error } of failedToDelete) {
console.log(` - ${chalk_1.default.yellow(repo.name)}: ${error}`);
}
console.log("");
}
}
//# sourceMappingURL=delete.js.map