text: /**
   * @desc: gen script command，make a new page generated by one click.
   * @author: nicejade
   */
  
  const fs = require('fs')
  const path = require('path')
  const colors = require('colors')
  
  const newFolderName = process.argv[2]
  
  String.prototype.firstUpperCase = function() {
    return this.replace(/\b(\w)/g, $1 => {
      return $1.toLowerCase()
    })
  }
  const resolve = dir => {
    return path.join(__dirname, '../..', dir)
  }
  
  const successExecPrint = msg => {
    console.log(
      colors.green(`✓ `) +
        colors.cyan(`${msg} `) +
        colors.green('task has been successfully executed.')
    )
  }
  
  function createNewPage(newFolderPath) {
    const mReg = new RegExp('@PAGE_CLASS_NAME', 'g')
    const pageContent = fs.readFileSync(`${__dirname}/template.ux`, 'UTF-8')
    const rootClassName = newFolderName
      .firstUpperCase()
      .replace(/([A-Z])/g, '-$1')
      .toLowerCase()
    const newContent = pageContent.replace(mReg, rootClassName)
  
    fs.mkdirSync(newFolderPath, 0777)
    fs.writeFile(`${newFolderPath}/index.ux`, newContent, error => {
      if (error) throw `Something went wrong: ${error}`
    })
    successExecPrint('Create New Page')
  }
  
  function saveRouter2Manifest() {
    const manifestPath = resolve('/src/manifest.json')
    let manifestConf = fs.readFileSync(manifestPath, 'UTF-8')
    manifestConf = JSON.parse(manifestConf)
    const routerPages = manifestConf.router.pages
    routerPages[`pages/${newFolderName}`] = {
      component: 'index'
    }
    manifestConf = JSON.stringify(manifestConf, null, 2)
    fs.writeFile(manifestPath, manifestConf, error => {
      if (error) throw `Something went wrong[@saveRouter2Manifest]: ${error}`
    })
    successExecPrint('Save Router Into Manifest')
  }
  
  function main() {
    if (!newFolderName) {
      return console.warn(
        `⚠️  Please enter the name of the page you want to create.`.underline.red
      )
    }
  
    const folderNameReg = /^[A-Z][[A-Za-z0-9]+$/
    if (!folderNameReg.test(newFolderName)) {
      return console.warn(
        `⚠️  Please enter the standard Folder name. Eg: XyzAbcde.`.underline.red
      )
    }
  
    const newFolderPath = path.join(__dirname, `../../src/pages/${newFolderName}`)
    const isExist = fs.existsSync(newFolderPath)
  
    if (isExist) {
      return console.warn(
        `⚠️  ${newFolderName} already exists in the /src/pages/ directory.`
          .underline.red
      )
    }
    createNewPage(newFolderPath)
    saveRouter2Manifest()
  }
  
  main()
  