Skip to content

Secrets

env_secret_replacer(env_file_path, **credentials)

Replace secret in env file.

Source code in saritasa_invocations/secrets.py
37
38
39
40
41
42
43
44
45
46
47
48
49
def env_secret_replacer(env_file_path: str, **credentials) -> None:
    """Replace secret in env file."""
    with pathlib.Path(env_file_path).open() as env_file:
        env_data = env_file.read()
    with pathlib.Path(env_file_path).open(mode="w") as env_file:
        for cred, value in credentials.items():
            env_data = re.sub(
                rf"{cred}=.*\n",
                rf"{cred}={value}\n",
                env_data,
                count=1,
            )
        env_file.write(env_data)

setup_env_credentials(context, credentials, env_file_path='.env')

Fill specified credentials.

Requires python-decouple

https://github.com/HBNetwork/python-decouple

Source code in saritasa_invocations/secrets.py
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
@invoke.task(iterable=["credentials"])
def setup_env_credentials(
    context: invoke.Context,
    credentials: collections.abc.Sequence[str],
    env_file_path: str = ".env",
) -> None:
    """Fill specified credentials.

    Requires python-decouple:
        https://github.com/HBNetwork/python-decouple

    """
    # decouple could not be installed during project init
    # so we import decouple this way to avoid import errors
    # during project initialization

    import decouple

    with k8s.get_env_secrets(context) as file_path:
        secrets = decouple.Config(decouple.RepositoryEnv(file_path))
        cred_params = {cred: str(secrets(cred)) for cred in credentials}
        env_secret_replacer(
            env_file_path=env_file_path,
            **cred_params,
        )