# -*- coding: utf-8 -*-
"""
relay_commander.generators
~~~~~~~~~~~~~~~~~~~~~~~~~~
This module allows for generating LaunchDarkly relay configurations
using Jinja templates.
"""
from jinja2 import Environment, PackageLoader
[docs]class ConfigGenerator():
"""Abstract configuration generator using Jinja."""
[docs] def __init__(self):
self.env = Environment(
loader=PackageLoader('relay_commander', 'templates')
)
[docs] def generate_relay_config(self, environments: list) -> None:
"""Generate ld-relay.conf file.
Given a list of environments of a project, this will generate a
``ld-relay.conf`` file in the current working directory. The conf file
follows the specification that is documented in the main `ld-relay`_
documentation.
.. _ld-relay: https://github.com/launchdarkly/ld-relay#configuration-file-format
:param environments: list of LaunchDarkly environments.
"""
template = self.env.get_template('ld-relay.conf.jinja')
with open('ld-relay.conf', 'w') as ld_relay_config:
template = template.render(
envs=environments
)
ld_relay_config.write(template)