UNPKG

kdesign-ui

Version:

kd is from company of klx, it provide quickly genarator company inner business front structure

68 lines (67 loc) 2.6 kB
#!/usr/bin/env node import { promisify } from 'util' import fs from 'fs' import art from 'art-template' import axios from 'axios' import path from 'path' import chalk from 'chalk' import { fieldType, GenParams } from '../utils/gen' const readFile = promisify(fs.readFile) const writeFile = promisify(fs.writeFile) const mkdir = promisify(fs.mkdir) const access = promisify(fs.access) const serialize = (arr = [], res: any = {}, i?:number) => { arr.forEach((item: any, idx: number) => { res = !item.name && !res.length ? [] : res if (item.data && Array.isArray(item.data) && item.data.length) { res[item.name || idx] = serialize(item.data, void 0, idx) return res } res[item.name] = item.example return res }) return res } const mkdirHandler = async (dir: string) => { let fileExist = true try { await access(dir) } catch (err) { fileExist = false } if (!fileExist) { console.log(dir) await mkdir(dir) } } const rules = fieldType export default async function (code: string, proxy: string, downPath: string) { const indexTpl = await readFile(`${__dirname}/template/index.js`) const modelTpl = await readFile(`${__dirname}/template/model/index.js`) const requestTpl = await readFile(`${__dirname}/template/request.js`) const utilsTpl = await readFile(`${__dirname}/template/model/utils.js`) const data = await axios(proxy).then(res => res.data) { data.data.definition.forEach((item: any) => { item.outputParam = serialize(item.outputParam) }) } const template = art.compile(indexTpl.toString())(Object.assign(data.data, { rules })) const modelTemplate = art.compile(modelTpl.toString())(Object.assign(data.data, { JSON, Array, gen: new GenParams })) const requestTemplate = art.compile(requestTpl.toString())(Object.assign(data.data, { rules })) await mkdirHandler(path.resolve(`${downPath}`, 'interface')) await mkdirHandler(path.resolve(`${downPath}`, 'interface/model')) writeFile(`${path.resolve(downPath, 'interface/request.js')}`, requestTemplate.replace(/\n\s+$/mg, '')) writeFile(`${path.resolve(downPath, 'interface/model/index.js')}`, modelTemplate.replace(/\n\s+$/mg, '').replace(/\&\#34;/g, '"').replace(/['"](Number|String|Boolean|Date|Object|Array)['"]/g, '$1')) writeFile(`${path.resolve(downPath, 'interface/index.js')}`, template.replace(/\n\s+$/mg, '')) writeFile(`${path.resolve(downPath, 'interface/model/utils.js')}`, utilsTpl) console.log(chalk.greenBright(`生成完成,请到${path.resolve(`${downPath}/interface`)}下查看`)) }