import chalk from 'chalk'
import jsonFormat from 'json-format'
import Create from './create'

interface createParams {
  root: string;
  name: string;
}

export default class CreatePage extends Create {

  constructor() {
    super()
    this.typeName = '页面'
    this.typeRoot = this.pageRoot
  }

  public create(_params?: createParams): Promise<any> {
    if (_params) {
      let {root, name} = _params
      this.projectRoot = root
      this._name = name
      this.getAppJson()
    }
    return new Promise(resolve => {
      super.create().then(async (loading) => {
        loading.text = '正在修改【project.config.json】文件'
        await this._modifyProjectConfigJson()
        loading.succeed(chalk.green(`创建【${this._name}】${this.typeName}成功`))
        resolve()
      })
    })
  }

  private async _modifyProjectConfigJson(): Promise<void> {
    this.projectConfigJson.condition.miniprogram.list.push({
      id: -1,
      name: this.newItemJsonName,
      pathName: this.newItemJsonRoot,
      query: '',
      scene: null
    })
    await this.writeFile(this.projectRoot, 'project.config.json', jsonFormat(this.projectConfigJson))
  }

}
export const CreatePageFs = new CreatePage()
