@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.
44 lines • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.analyzeRepositories = analyzeRepositories;
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 analyzeRepositories() {
const repositories = await (0, github_1.fetchUserRepositories)();
if (repositories.length === 0) {
console.log(chalk_1.default.yellow("No repositories found for your account."));
return [];
}
const spinner = (0, ora_1.default)("Analyzing repository activity...").start();
const enhancedRepos = [];
for (let i = 0; i < repositories.length; i++) {
const repo = repositories[i];
spinner.text = `Analyzing repository activity... (${i + 1}/${repositories.length}) ${repo.full_name}`;
try {
const commits = await (0, github_1.fetchRepositoryCommits)(repo.owner.login, repo.name);
const formattedRepo = (0, ui_1.formatRepositoryInfo)(repo, commits.length);
enhancedRepos.push(formattedRepo);
}
catch (error) {
console.error(`Error analyzing ${repo.full_name}:`, error instanceof Error ? error.message : "Unknown error");
}
}
spinner.succeed(`Analyzed ${enhancedRepos.length} repositories`);
const sortedRepos = enhancedRepos.sort((a, b) => {
if (a.isInactive && !b.isInactive)
return -1;
if (!a.isInactive && b.isInactive)
return 1;
return Number.parseInt(a.commitCount) - Number.parseInt(b.commitCount);
});
console.log(chalk_1.default.cyan("\nRepositories sorted by inactivity and low commit count:"));
console.log(`${chalk_1.default.yellow("Yellow")} = Inactive (no updates for 6+ months)`);
console.log(`${chalk_1.default.red("Red")} = Few commits (3 or fewer)\n`);
return await (0, ui_1.promptRepositorySelection)(sortedRepos);
}
//# sourceMappingURL=analyze.js.map