private generateInterfaces()

in projenrc/projects/monorepo-project.ts [56:160]


  private generateInterfaces() {
    new ProjenStruct(this, {
      name: "TypeScriptProjectOptions",
      filePath: `${this.srcdir}/projects/typescript/typescript-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.typescript.TypeScriptProjectOptions"))
      .allOptional()
      .add({
        name: "name",
        type: { primitive: PrimitiveType.String },
        optional: false,
        docs: {
          default: "$BASEDIR",
        },
      })
      .update("deps", {
        docs: {
          custom: {
            featured: "false",
          },
        },
      })
      .update("description", {
        docs: {
          custom: {
            featured: "false",
          },
        },
      })
      .update("packageName", {
        docs: {
          custom: {
            featured: "false",
          },
        },
      });

    new ProjenStruct(this, {
      name: "JavaProjectOptions",
      filePath: `${this.srcdir}/projects/java/java-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.java.JavaProjectOptions"))
      .allOptional()
      .add({
        name: "name",
        type: { primitive: PrimitiveType.String },
        optional: false,
        docs: {
          default: "$BASEDIR",
        },
      });

    new ProjenStruct(this, {
      name: "PythonProjectOptions",
      filePath: `${this.srcdir}/projects/python/python-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.python.PythonProjectOptions"))
      .allOptional()
      .add({
        name: "name",
        type: { primitive: PrimitiveType.String },
        optional: false,
        docs: {
          default: "$BASEDIR",
        },
      })
      .add({
        name: "moduleName",
        type: { primitive: PrimitiveType.String },
        optional: false,
        docs: {
          default: "$PYTHON_MODULE_NAME",
        },
      })
      .omit(
        "pip",
        "venv",
        "venvOptions",
        "poetry",
        "projenrcPython",
        "projenrcJs",
        "projenrcJsOptions",
        "projenrcTs",
        "projenrcTsOptions"
      );

    this.eslint?.addIgnorePattern(
      `${this.srcdir}/projects/typescript/typescript-project-options.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/projects/java/java-project-options.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/projects/python/python-project-options.ts`
    );
  }