import os
from aws_cdk import Environment
from aws_pdk.cdk_graph import CdkGraph, FilterPreset, Filters, IFilter, IGraphFilterPlan
from aws_pdk.cdk_graph_plugin_diagram import CdkGraphDiagramPlugin, IDiagramConfigBase
from aws_pdk.cdk_graph_plugin_threat_composer import CdkGraphThreatComposerPlugin
from aws_pdk.pdk_nag import PDKNag, AwsPrototypingChecks
from {{{moduleName}}}.stacks.application_stack import ApplicationStack

app = PDKNag.app(nag_packs=[AwsPrototypingChecks()])
ApplicationStack(app, "{{{stackName}}}-sandbox", env=Environment(
    account=os.getenv("CDK_DEFAULT_ACCOUNT"),
    region=os.getenv("CDK_DEFAULT_REGION")
))
{{#stages}}
ApplicationStack(app, "{{{stackName}}}-{{{stageName}}}", env=Environment(
    account="{{{account}}}",
    region="{{{region}}}"
))
{{/stages}}

graph = CdkGraph(app, plugins=[
    CdkGraphDiagramPlugin(
        defaults=IDiagramConfigBase(
            filter_plan=IGraphFilterPlan(
                preset=FilterPreset.COMPACT,
                filters=[IFilter(store=Filters.prune_custom_resources())]
            )
        )
    ),
    CdkGraphThreatComposerPlugin(),
])
app.synth()
graph.report()