
const chalk= require("chalk");
const path= require( "path");
const {Listr} = require('listr2');
const {TaskNodeVersion,copyDir}= require('./utils');
const inquirer = require('inquirer');
const ROOT=path.resolve(__dirname,"../");

/**
 * 创建项目
 * 1. 让用户选择需要哪类模板
 * 2. 将templates/对应模板 复制到当前用户执行命令的文件夹下
 */
module.exports=async ()=> {
  const sourceDir = process.cwd();
  const templatesDir = path.resolve(ROOT,"templates");
  let templateName='';
  const answer = await inquirer.prompt([
    {
      name:'type',
      type:'list',
      message:'请选择框架类型：',
      choices:[
        '移动端APP',
        // 'pc官网(未开放)',
        // '移动端H5活动(未开放)',
        // 'pc官网(未开放)',
        // 'pc管理系统',
        // 'OA子系统(未开放)'
      ],
      default:'移动端APP'
    },
  ]);
  if(answer){
    switch(answer.type){
      case '移动端APP':{templateName='template_app'}break;
      case 'pc管理系统':{templateName='template_admin'}break;
    }
  }

  const tasks = new Listr([
    {
      ...TaskNodeVersion
    },
    {
      title: "项目创建中",
      task: () => copyDir(path.resolve(templatesDir,templateName),sourceDir)
    },
  ]);
  try{
    await tasks.run();
    console.log(chalk.green.bold("完成"));
  }catch(err){
    console.log(chalk.red.bold("ERROR："+err.message));
    return 0;
  }
  return 1;
}