# All files / src pdk-pipeline-py-project.ts

100% Statements 13/13
100% Branches 2/2
100% Functions 2/2
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62

    4x
    4x
    4x
    4x
    4x

    4x

    4x

    4x
    12x

    4x

    4x

    4x

    4x

     /*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved.
    SPDX-License-Identifier: Apache-2.0 */
    import * as fs from "fs";
    import * as path from "path";
    import { SampleDir } from "projen";
    import { AwsCdkPythonApp, AwsCdkPythonAppOptions } from "projen/lib/awscdk";
    import { Pytest } from "projen/lib/python";

    /**
     * Configuration options for the PDKPipelinePyProject.
     */
    export interface PDKPipelinePyProjectOptions extends AwsCdkPythonAppOptions {}

    /**
     * Synthesizes a Python Project with a CI/CD pipeline.
     *
     * @pjid pdk-pipeline-py
     */
    export class PDKPipelinePyProject extends AwsCdkPythonApp {
      constructor(options: PDKPipelinePyProjectOptions) {
        super({
          github: false,
          sample: false,
          pytest: false,
          ...options,
          appEntrypoint:
            options.appEntrypoint || `${options.moduleName}/pipeline.py`,
        });

        ["aws_prototyping_sdk", "cdk-nag", "pyhumps"].forEach((dep) =>
          this.addDependency(dep)
        );

        this.addDevDependency("pytest");

        new SampleDir(this, this.moduleName, {
          sourceDir: path.join(__dirname, "..", "samples", "python", "infra"),
        });

        this.pytest = new Pytest(this, options.pytestOptions);

        new SampleDir(this, this.testdir, {
          files: {
            "__init__.py": "",
            "test_pipeline.py": fs
              .readFileSync(
                path.join(
                  __dirname,
                  "..",
                  "samples",
                  "python",
                  "tests",
                  "test_pipeline.py"
                )
              )
              .toString()
              .replace("infra.", `${this.moduleName}.`),
          },
        });
      }
    }