UNPKG

@cliz/gpm

Version:
79 lines (78 loc) 2.95 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, { api }) => { return createCommand('Add an project') .argument('<url>', 'The Git Project Url') .option('-d, --depth <depth>', 'Specify git repo clone depth', { validator: (value) => { if (!value) { throw new Error(`depth is required in -d, --depth <depth>`); } if (!/\d+/.test(value)) { throw new Error(`depth must be a number`); } return +value; }, }) .action(async ({ args, options }) => { try { const url = args.url; console.info(`Adding repository: ${api.color.success(url)}`); // 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, api); } await core_1.default.project.prepare(); // const project = core_1.default.project.get(url); // console.info(`Cloning into: ${api.color.success(project.path)}`); if (!(await core_1.default.project.validate(url))) { console.error(`Failed to add: ${api.color.error(url)} is not a valid project`); return; } try { await core_1.default.project.add(url, options); console.info(`Project at path: ${api.color.success(project.path)}`); } catch (error) { if (/found/i.test(error.message)) { console.error(`Found at path: ${api.color.error(project.path)}`); } else { throw error; } } finally { await api.clipboard .copy(project.path) .then(() => console.info(`Copied (${api.color.success(project.path)}) to clipboard`)) .catch(() => console.error(`Failed to copied (${api.color.success(project.path)}) to clipboard`)); } } catch (error) { console.error(error); } }); }); async function setupConfig(gpm, api) { const answers = await cli_1.inquirer.prompt([ { name: 'workdir', type: 'text', message: 'Input Your Work Directory ?', default: api.path.homedir('code'), validate: (t) => !!t, }, ]); let workdir = answers.workdir; if (!workdir.startsWith('/')) { workdir = api.path.homedir(workdir); } gpm.config.set('project', { workdir, }); }