#! /usr/bin/env node

// Node Cli 应用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macos 系统还需要修改此文件的读写权限为 755
// 具体是通过 chmod 755 cli.js 实现修改

// console.log('working');
// 脚手架的工作过程
// 1.通过命令交互询问用户问题
// 2.根据用户回答的结果生成文件

// 在终端 执行 generate-code

const inquirer = require('inquirer');
const fs = require('fs');
const path = require('path');
const ejs = require('ejs');

// 读取json
const list = JSON.parse(fs.readFileSync('./generate-code/pc_menu_企业风管.json'));
// 目标目录
// const destDir = process.cwd();
const destDir = path.join(process.cwd(), 'src');

function action(type, name, path) {
	function getEnum(arr, callback) {
		arr.forEach((el) => {
			const { code, title, children } = el;
			if (el.type === type) {
				// 按钮类型
				fs.promises.readFile(path).then((res) => {
					console.log(code);
					if (!name.includes(code)) {
						name += `
						${code} = '${code}', // ${title}
						`;
						callback();
					}
					getEnum(children, callback);
				});
			} else {
				getEnum(children, callback);
			}
		});
	}
	getEnum(list, () => {
		const temp =
			name +
			`
		}`;
		fs.writeFileSync(path, temp, { flag: 'w+' }, (err) => {
				// !err && console.log('写入文件成功！');
		});
	});
}

/*** ===================== 生成弹窗名枚举 ==================== ****/
const enumPath = path.join(destDir, '/common/constants/modalNameEnum.ts');
const name = `export enum ModalEnum {
    notice = 'notice',  // 消息
    logout = 'logout', // 退出登录
    commomOrder = 'commom-order', // 下单通用界面

    detail = 'detail', // 详情`;
action(2, name, enumPath)

/*** ===================== 生成单据组件名枚举 ==================== ****/
const enumOrderPath = path.join(destDir, '/common/constants/enumOrderComponents.ts');
const orderName = `// 组件名枚举
export enum enumOrderComponents {`;
action(4, orderName, enumOrderPath)

/*** ===================== 生成路由名枚举 ==================== ****/
const enumRouterPath = path.join(destDir, '/common/constants/enumRouterName.ts');
const routerName = `// 路由名 枚举
export enum EnumRouterName {`;
action(1, routerName, enumRouterPath)
