UNPKG

@cliz/gpm

Version:
61 lines (60 loc) 2.28 kB
"use strict"; 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, }); }