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.

44 lines 2.17 kB
"use strict"; 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