@cliz/gpm
Version:
Git Project Manager
66 lines (65 loc) • 2.52 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('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,
});
}