UNPKG

@cliz/gpm

Version:
66 lines (65 loc) 2.52 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('Create an project') .argument('<target>', 'The Target Git Repo') .argument('<template>', 'The Template Git Repo') .action(async ({ args }) => { try { const target = args.target; const template = args.template; console.info(`Creating repository: ${cli_1.api.color.success(target)}`); // 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 project = core_1.default.project.get(target); // console.info(`Cloning into: ${api.color.success(project.path)}`); try { await core_1.default.project.create(target, template); console.info(`Project at path: ${cli_1.api.color.success(project.path)}`); } catch (error) { if (/found/i.test(error.message)) { console.error(`Found at path: ${cli_1.api.color.error(project.path)}`); } else { throw error; } } finally { 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, }); }