import * as readline from "readline" import * as fs from "fs" const leitor = readline.createInterface({ input: process.stdin, output: process.stdout }); leitor.question("Project name (ex roit-project-good): ", function (projectName) { leitor.question("Description: ", async function (description) { await createFolder('out') await createFolder('src') await createFolder('src/router') await generetePackage(projectName, description) await copyFile('gulpfile.js') await copyFile('LICENSE') await copyFile('README.md') await copyFile('tsconfig.json') await copyFile('.gitignore') await copyFile('src/index.ts') await copyFile('src/App.ts') await copyFile('src/router/TemplateRouter.ts') await copyFile('deploy.sh') await copyFile('env.yaml') await copyFile('.gcloudignore') leitor.close(); }); }); function generetePackage(projectName, description) { return new Promise((resolve, reject) => { fs.readFile(`template/package.json.template`, function (err, buf) { if (err) { console.log(err) } else { let fileString = buf.toString().replace(//g, projectName).replace(//g, description); fs.writeFile(`out/package.json`, fileString, (err) => { if (err) { console.log(err) reject() } else { log('Create package with sucessfull') } }); resolve() } }); }) } function createFolder(name) { return new Promise((resolve, reject) => { fs.mkdir(`./${name}`, (err) => { if (err) { console.log(err) reject() } else { resolve() } }); }) } async function copyFile(fileName) { return new Promise((resolve, reject) => { fs.readFile(`template/${fileName}.template`, function (err, buf) { if (err) { console.log(err) } else { let fileString = buf.toString() fs.writeFile(`${fileName}`, fileString, (err) => { if (err) { console.log(err) reject(err) } else { log(`Create ${fileName} with sucessfull`) } }); resolve() } }); }) } function log(mens) { console.log('\x1b[32m%s\x1b[36m%s', '✓ ', mens); //cyan }