UNPKG

@git.zone/cli

Version:

A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.

53 lines (44 loc) 1.71 kB
import * as plugins from './mod.plugins.js'; import * as paths from '../paths.js'; import { logger } from '../gitzone.logging.js'; export const getTemplatePath = (templateNameArg: string) => { return plugins.path.join(paths.templatesDir, templateNameArg); }; /** * receives a template name and returns wether there is a corresponding template */ export const isTemplate = async (templateNameArg: string) => { return plugins.smartfile.fs.isDirectory(getTemplatePath(templateNameArg)); }; export const getTemplate = async (templateNameArg: string) => { if (isTemplate(templateNameArg)) { const localScafTemplate = new plugins.smartscaf.ScafTemplate(getTemplatePath(templateNameArg)); await localScafTemplate.readTemplateFromDir(); return localScafTemplate; } else { return null; } }; export const run = async (argvArg: any) => { let chosenTemplate: string = argvArg._[1]; if (!chosenTemplate) { const smartinteract = new plugins.smartinteract.SmartInteract(); const answerBucket = await smartinteract.askQuestion({ type: 'list', default: 'npm', message: 'What template do you want to scaffold? (Only showing mpost common options)', name: 'templateName', choices: ['npm', 'service', 'wcc', 'website'], }); chosenTemplate = answerBucket.value; } if (await isTemplate(chosenTemplate)) { logger.log('info', `found requested template ${chosenTemplate}`); } else { logger.log('error', `Template ${chosenTemplate} not available`); return; } const localScafTemplate = await getTemplate(chosenTemplate); await localScafTemplate.askCliForMissingVariables(); await localScafTemplate.writeToDisk(paths.cwd); };