UNPKG

@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
"use strict"; 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