@cliz/gpm
Version:
Git Project Manager
73 lines (72 loc) • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const cli_1 = require("@cliz/cli");
const core_1 = require("../core");
exports.default = (0, cli_1.defineSubCommand)((createCommand) => {
return createCommand('Remove a project')
.argument('<repo>', 'The Git Project')
.action(async ({ args }) => {
try {
const repo = args.repo;
//
await core_1.default.prepare();
const projectConfig = core_1.default.config.get('project');
if (!(projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.workdir)) {
await setupConfig(core_1.default);
}
await core_1.default.project.prepare();
//
const projects = await core_1.default.project.search(repo);
let project = projects[0];
if (projects.length > 1) {
const answers = await cli_1.inquirer.prompt([
{
name: 'projectId',
type: 'list',
message: 'Select ?',
choices: projects.map((e) => ({ name: e.id, value: e.id })),
validate: (t) => !!t,
},
]);
project = projects.find((e) => answers.projectId === e.id);
}
if (!project) {
return console.error(`Project not found: ${cli_1.api.color.error(repo)}`);
}
const answers = await cli_1.inquirer.prompt([
{
name: 'ok',
type: 'confirm',
message: `Confirm to remove ${cli_1.api.color.error(project.id)}?`,
required: true,
default: false,
},
]);
if (answers.ok) {
await core_1.default.project.remove(project.provider, project.owner, project.name);
console.info(`Success to remove ${cli_1.api.color.error(project.id)} at ${cli_1.api.color.error(project.path)}`);
}
}
catch (error) {
console.error(error);
}
});
});
async function setupConfig(gpm) {
const answers = await cli_1.inquirer.prompt([
{
name: 'workdir',
type: 'text',
message: 'Input Your Work Directory ?',
default: cli_1.api.path.homedir('code'),
validate: (t) => !!t,
},
]);
let workdir = answers.workdir;
if (!workdir.startsWith('/')) {
workdir = cli_1.api.path.homedir(workdir);
}
gpm.config.set('project', {
workdir,
});
}