private generateInterfaces()

in projenrc/projects/infrastructure-project.ts [42:119]


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

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

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

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