56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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);
 | 
						|
};
 |