import os

from aws_cdk import (
    core,
    aws_s3 as s3,
    aws_s3_deployment as s3_deployment
)


class S3Ops(core.Stack):

    def __init__(self, scope: core.Construct, id: str, bucket_name: str, components_prefix: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # create an s3 bucket
        ops_bucket = s3.Bucket(self,
                               "stack_ops_bucket",
                               bucket_name=bucket_name,
                               versioned=True
                               )

        # set component folder as source for deployment
        source_asset = s3_deployment.Source.asset('./components')

        # deploy everything under folder to s3 bucket
        s3_deployment.BucketDeployment(self,
                                       "stacks_components_deployment",
                                       destination_bucket=ops_bucket,
                                       sources=[source_asset],
                                       destination_key_prefix=components_prefix
                                       )