# -*- coding: utf-8 -*- """ Import lektor plugin stuff """ from lektor.pluginsystem import Plugin from lektor.project import Project from lektor.context import get_ctx # pylint: disable=too-many-arguments def render_template(env, pad, filepath, inputname, inputvalue, color, tiny): """ Render my custom Jinja2 Template """ # Prepare Variables rendered_title = f"{inputvalue}: {inputname}" if not tiny: rendered_sizes = f"width=\"{int(132.5+(int(len(inputname)/2)*10))}\" height=\"20\"" orange_box_width = str(int(5+len(inputname)*5)) orange_position = str(int(50+(len(inputname)*5))) latest_element_x = str(int(1+(int(len(inputname)/2)*10)-1)-0.007) accent_02_multiplier = str(1+int(len(inputname)/2)) name_position = str(105) else: rendered_sizes = f"width=\"{int(102.5+(int(len(inputname)/2)*10))}\" height=\"20\"" orange_box_width = str(int(5+len(inputname)*5)+25) orange_position = str(int(50+(len(inputname)*5))) latest_element_x = str(int(1+(int(len(inputname)/2)*10)-1)-30.007) accent_02_multiplier = str(1+int(len(inputname)/2)-3) name_position = str(75) # Create File with open(f"assets/{filepath}", 'w', encoding='UTF-8') as outputfile: outputfile.write(env.render_template( 'galaxy.svg', pad=pad, this={ 'title': str(rendered_title), 'name': str(inputname), 'name_position': str(name_position), "sizes": str(rendered_sizes), "orange_box_width": str(orange_box_width), "orange_position": str(orange_position), "accent03_x": str(latest_element_x), "bg_orange_x": str(latest_element_x), "accent_02_multiplier": str(accent_02_multiplier), "inputvalue": str(inputvalue), "color_orange": str(color) })) # pylint: disable=unused-argument def generate_galaxy_svg(inputname, **options): """ Generate a File based on a Jinja2 Templated that will show the ansible galaxy name """ # Setup Lektor Env project = Project.discover() env = project.make_env() # Setup CTX ctx = get_ctx() if ctx is not None: pad = ctx.pad else: pad = env.new_pad() # Create File filepath = f"/svg/{inputname}.svg" color = '#FF6600' render_template(env, pad, filepath, inputname, 'ansible-galaxy', color, False) return filepath # pylint: disable=unused-argument def generate_maintainance_svg(inputdict, **options): """ Generate a File based on a Jinja2 Templated that will show the maintainance state """ # Setup Lektor Env project = Project.discover() env = project.make_env() # Setup CTX ctx = get_ctx() if ctx is not None: pad = ctx.pad else: pad = env.new_pad() # Sort Input inputname = str(dict(inputdict)['name']) inputstate = str(dict(inputdict)['state']) # Create File filepath = f"/svg/{inputname}_maintainance.svg" match inputstate: case 'well': color = '#cd02fa' case 'true': color = '#8a00a6' case 'poor': color = '#5d0070' case 'false': color = '#220029' case _: color = '#000000' render_template(env, pad, filepath, inputstate, 'maintainance', color, False) return filepath # pylint: disable=unused-argument def generate_license_svg(inputdict, **options): """ Generate a File based on a Jinja2 Templated that will show the used License """ # Setup Lektor Env project = Project.discover() env = project.make_env() # Setup CTX ctx = get_ctx() if ctx is not None: pad = ctx.pad else: pad = env.new_pad() # Sort Input inputname = str(dict(inputdict)['name']) inputstate = str(dict(inputdict)['state']) # Create File filepath = f"/svg/{inputname}_license.svg" color = '#064ccf' render_template(env, pad, filepath, inputstate, 'license', color, True) return filepath class RenderTemplatePlugin(Plugin): """ Create Plugin and listen to Filter Keyword """ name = 'lektor_render_template' description = 'Lektor plugin to generate files form filters.' def on_setup_env(self, **extra): """ Create Listener for Filter """ self.env.jinja_env.filters['galaxy'] = generate_galaxy_svg self.env.jinja_env.filters['maintainance'] = generate_maintainance_svg self.env.jinja_env.filters['license'] = generate_license_svg