constructor()

in lib/generator.js [31:78]


  constructor(option = {}) {
    this.baseClient = option && option.baseClient;
    this.typedef = option.go && option.go.typedef ? option.go.typedef : {};
    this.importsTypedef = {};
    const pack = option && option.package || [];
    this.uselessPack = [];
    Object.keys(this.typedef).forEach((def) => {
      if (this.typedef[def].import && this.typedef[def].type) {
        if (!pack.includes(this.typedef[def].import)) {
          pack.push(this.typedef[def].import);
          this.uselessPack.push(this.typedef[def].import);
        }
      }
    });
    this.goPackages = pack.map(packageName => {
      if (packageName.includes(' ')) {
        return `  ${packageName}`;
      }
      if (packageName !== 'io') {
        return `  "${packageName}"`;
      }
    });
    this.config = {
      outputDir: '',
      indent: '    ',
      clientPath: '/client/client.go',
      ...option
    };
    this.output = '';
    this.outputDir = option.outputDir;
    this.__module = {};
    this.exec = this.config.exec;
    this.editable = this.config.editable;
    this.noCompatible = this.config.noCompatible;
    if (this.exec) {
      this.config.clientPath = '/main/main.go';
    }

    if (!this.outputDir) {
      throw new Error('`option.outputDir` should not empty');
    }

    if (!fs.existsSync(this.outputDir)) {
      fs.mkdirSync(this.outputDir, {
        recursive: true
      });
    }
  }