del-repos
Version:
A command-line tool for bulk deleting GitHub or Gitee repositories
84 lines (83 loc) • 3.7 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const yargs_1 = __importDefault(require("yargs"));
const helpers_1 = require("yargs/helpers");
const kolorist_1 = require("kolorist");
const cli_1 = require("./utils/cli");
const github_1 = require("./services/github");
const gitee_1 = require("./services/gitee");
const spinner_1 = require("./utils/spinner");
const fs_1 = require("fs");
const utils_1 = require("./utils");
const path_1 = require("path");
const packageJsonPath = (0, path_1.join)(__dirname, '../package.json');
const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
const version = packageJson.version;
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
.usage('Usage: $0 [options]')
.version(version)
.alias('v', 'version')
.help('h')
.alias('h', 'help')
.option('t', {
alias: 'type',
describe: '显示的仓库列表类型(o: owner, a: all)',
choices: ['o', 'a'],
demandOption: false,
type: 'string',
})
.epilog('For more information, visit https://github.com/yaolifeng0629/del-repos.git').argv;
const main = () => __awaiter(void 0, void 0, void 0, function* () {
console.log((0, kolorist_1.blue)('Welcome to the Repository Deletion CLI Tool'));
const platform = yield (0, cli_1.promptPlatform)();
if (platform === 'Gitee') {
console.log((0, kolorist_1.blue)('Gitee support is now available.'));
}
const token = yield (0, cli_1.promptToken)(platform);
(0, spinner_1.startSpinner)('Fetching your repositories...');
/**
* 获取仓库类型
* @param t(type) 仓库类型: owner || all
*/
const { t: type = 'a' } = yield argv;
try {
let repos;
if (platform === 'GitHub') {
repos = yield (0, github_1.fetchGithubRepos)(token, (0, utils_1.reposType)(type));
}
else {
repos = yield (0, gitee_1.fetchGiteeRepos)(token, (0, utils_1.reposType)(type));
}
(0, spinner_1.stopSpinner)('Fetched repositories successfully.');
const selectedRepos = yield (0, cli_1.promptRepositories)(repos);
if (selectedRepos.length === 0) {
console.log((0, kolorist_1.blue)('No repositories selected.'));
process.exit(1);
}
if (platform === 'GitHub') {
yield (0, github_1.deleteGithubRepos)(token, selectedRepos);
}
else {
yield (0, gitee_1.deleteGiteeRepos)(token, selectedRepos);
}
console.log((0, kolorist_1.blue)('All selected repositories have been deleted.'));
}
catch (error) {
(0, spinner_1.stopSpinner)('Failed to fetch repositories.');
console.error(error.message);
}
});
main();