@cliz/gpm
Version:
Git Project Manager
61 lines (60 loc) • 2.28 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('Search a project')
.argument('<keyword>', 'Keyword')
.action(async ({ args }) => {
try {
const keyword = args.keyword;
//
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(keyword);
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,
},
]);
const project = projects.find((e) => answers.projectId === e.id);
if (!project) {
return console.error(`no projects includes keyword ${keyword}`);
}
await cli_1.api.clipboard
.copy(project.path)
.then(() => console.info(`Copied (${cli_1.api.color.success(project.path)}) to clipboard`))
.catch(() => console.error(`Failed to copied (${cli_1.api.color.success(project.path)}) to clipboard`));
}
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,
});
}