Source code for aws_ops_alpha.config.deploy
# -*- coding: utf-8 -*-
"""
Deployment related configs.
"""
import typing as T
import dataclasses
from s3pathlib import S3Path
if T.TYPE_CHECKING: # pragma: no cover
from .main import BaseEnv
[docs]@dataclasses.dataclass
class DeployMixin:
"""
Deployment related configs.
:param s3uri_artifacts: where you want to store code artifacts, such as
source code build, deployment package, cloudformation template,
temp artifacts, etc ...
:param s3uri_docs: where you want to store project documentation website.
an AWS project should always have a delegated s3 folder
to host the static documentation website.
"""
s3uri_artifacts: T.Optional[str] = dataclasses.field(default=None)
s3uri_docs: T.Optional[str] = dataclasses.field(default=None)
@property
def s3dir_artifacts(self: "BaseEnv") -> S3Path: # pragma: no cover
"""
Shared artifacts s3 dir for all environments.
"""
return S3Path.from_s3_uri(self.s3uri_artifacts).to_dir()
@property
def s3dir_env_artifacts(self: "BaseEnv") -> S3Path: # pragma: no cover
"""
Env specific artifacts s3 dir.
example: ``${s3dir_artifacts}/${env_name}/
"""
return self.s3dir_artifacts.joinpath("envs", self.env_name).to_dir()
@property
def s3dir_tmp(self: "BaseEnv") -> S3Path:
"""
example: ``${s3dir_artifacts}/tmp/``
"""
return self.s3dir_artifacts.joinpath("tmp").to_dir()
@property
def s3dir_config(self: "BaseEnv") -> S3Path:
"""
example: ``${s3dir_artifacts}/config/``
"""
return self.s3dir_artifacts.joinpath("config").to_dir()
@property
def s3dir_docs(self: "BaseEnv") -> S3Path: # pragma: no cover
"""
Documentation website s3 directory.
"""
return S3Path.from_s3_uri(self.s3uri_docs).to_dir()