PK! q!docker_compose_expand/__init__.py__version__ = '0.1.0' PK!mdocker_compose_expand/cli.pyfrom .core import DockerComposeExpand def main(): tool = DockerComposeExpand() tool.load() tool.generate() tool.save() tool.run() if __name__ == "__main__": main() PK!r docker_compose_expand/core.pyimport subprocess import sys from . import __version__ from .utils import yaml, template class DockerComposeExpand: def __init__( self, input_file="docker-compose-expand.yml", output_file="docker-compose.yml" ): """ Create initial variables """ self.input_file = input_file self.output_file = output_file self.version = "" self.real_services = dict() self.variables = "" self.defined_expandable_services = [] def check(): """ Check docker-compose-expand.yml file """ pass def load(self): """ Load docker-compose-expand file """ _content = yaml.read_file(self.input_file) _services = _content["services"] if _services is not None: self.real_services = _services self.version = _content["version"] self.variables = _content["expand"]["vars"] self.defined_expandable_services = _content["expand"]["services"] def reload(): """ Reload docker-compose-expand.yml file """ pass def generate(self): """ Generate services based on the expand field in the docker-compose-expand.yml file""" for defined_expandable_service in self.defined_expandable_services: expanded_services = self.__generate_expandable_services( name_field=defined_expandable_service["name"], service_field=defined_expandable_service["service"], loop_field=defined_expandable_service["loop"], ) for service in expanded_services: self.real_services.update(service) def __generate_service(self, name, service, item): _name = template.render(name, item) _new_service = template.render(service, item) return {_name: _new_service} def __generate_services(self, variables, name_field, service_field): _services = [] for item in variables: _new_service_object = self.__generate_service( name_field, service_field, item ) _services.append(_new_service_object) return _services def __generate_expandable_services(self, name_field, service_field, loop_field): expanded_loop_field = loop_field if isinstance(loop_field, str): expanded_loop_field = template.render(loop_field, self.variables) elif isinstance(loop_field, list): pass return self.__generate_services(expanded_loop_field, name_field, service_field) def save(self): """ Save the services to docker-compose.yml file """ content = {"version": self.version, "services": self.real_services} yaml.write_file(filepath=self.output_file, content=content) def run(self): """ Run docker-compose tool""" if len(sys.argv) > 1 and sys.argv[1] in ["version"]: print("docker-compose-expand version {}".format(__version__)) subprocess.call(["docker-compose", *sys.argv[1:]]) sys.exit(0) PK!u'docker_compose_expand/utils/template.pyfrom jinja2 import Template from .yaml import load_content def render(content, item): tm = Template(str(content)) msg = tm.render(**item) msg_object = load_content(msg) return msg_object PK!ې!cc#docker_compose_expand/utils/yaml.pyimport io import oyaml as yaml def load_content(content): return yaml.load(content) def read_file(filepath): with io.open(filepath, "r", encoding="utf8") as f: return load_content(f) def write_file(filepath, content=""): with io.open(filepath, "w", encoding="utf8") as f: yaml.dump(content, f, default_flow_style=False) PK!HI<H6docker_compose_expand-0.1.0.dist-info/entry_points.txtN+I/N.,()JON-M-/NM(HKCE!z9Vy\\PK!HnHTU+docker_compose_expand-0.1.0.dist-info/WHEEL A н#Z;/"d&F[xzw@Zpy3Fv]\fi4WZ^EgM_-]#0(q7PK!HB,N .docker_compose_expand-0.1.0.dist-info/METADATAVo6οCX{*łx],bHFRN(5bI{x|<7x>cV1=/D N ]ڊ@<\l TE"5,te6"ET |sh&]V݅/U[s,,F]\!V.&w nɸj&QpǀlF;hLZUI#lp@$.a8!YέS)8o.DHi|.pU2YC8ã5+gT3s5pT@?/KbꞟhA&F/8!EA3P^$.p- isa#K~ δrBEFrEh܇T?*YMиop5oxQbc {ToED3>!΂_ Ge*xJkl֯4;j:Se%5Џt/qM3yPK!H!,docker_compose_expand-0.1.0.dist-info/RECORDɎP}= (2Z(2K!(pr7&&]v?''q u 4H6luM`X$~{R + %N™qi1H~tx!Ӌ-xiC4yl.yCrW%>w& ̇W$ʈDܺ*sz& `g"h:(*DYzȸPriŸ!.#;#uITyrvZu C2cK;°?PK! q!docker_compose_expand/__init__.pyPK!mUdocker_compose_expand/cli.pyPK!r Pdocker_compose_expand/core.pyPK!u'q docker_compose_expand/utils/template.pyPK!ې!cc#docker_compose_expand/utils/yaml.pyPK!HI<H6(docker_compose_expand-0.1.0.dist-info/entry_points.txtPK!HnHTU+docker_compose_expand-0.1.0.dist-info/WHEELPK!HB,N .Udocker_compose_expand-0.1.0.dist-info/METADATAPK!H!,Udocker_compose_expand-0.1.0.dist-info/RECORDPK c