11import click
22import json
3- import logging
43from cfn_flip import to_json
54
6- from jinja2 import Template
5+ from . import core
76
8- logger = logging .getLogger ()
9- logger .setLevel (logging .INFO )
107
11-
12- def get_parameters (template ):
13- params = template .get ('Parameters' )
14- if not params :
15- params = template .get ('parameters' )
16- if not params :
17- params = []
18- return params
19-
20-
21- def get_resources (template ):
22- resources = template .get ('Resources' )
23- if not resources :
24- resources = template .get ('resources' )
25- if not resources :
26- resources = []
27- return resources
28-
29-
30- def get_outputs (template ):
31- outputs = template .get ('Outputs' )
32- if not outputs :
33- outputs = template .get ('outputs' )
34- if not outputs :
35- outputs = []
36- return outputs
37-
38-
39- def get_description (template ):
40- description = template .get ("Description" )
41- if not description :
42- description = template .get ('description' )
43- if not description :
44- description = "No Template description set"
45- return description
46-
47- TEMPLATE = """# {{ name }}
48- # Description
49- {{ description }}
50-
51- ## Parameters
52- The list of parameters for this template:
53- {% for parameter in parameters %}
54- ### {{ parameter }}
55- Type: {{ parameters[parameter].Type }} {% if parameters[parameter].Default %}
56- Default: {{ parameters[parameter].Default}}{% endif %} {% if parameters[parameter].Description %}
57- Description: {{ parameters[parameter].Description}}{% endif %} {% endfor %}
58-
59- ## Resources
60- The list of resources this template creates:
61- {% for resource in resources %}
62- ### {{ resource }}
63- Type: {{ resources[resource].Type }} {% if resources[resource].Description %}
64- Description: {{ resources[resource].Description}}{% endif %} {% endfor %}
65-
66- ## Outputs
67- The list of outputs this template exposes:
68- {% for output in outputs %}
69- ### {{ output }}
70- {% if outputs[output].Description %}Description: {{ outputs[output].Description}}{% endif %}{% if outputs[output].Export %}
71- Export name: {{ outputs[output].Export.Name }}{% endif %}
72- {% endfor %}
73- """
748@click .command ()
759@click .argument ('f' , type = click .File ())
7610def generate (f ):
@@ -82,18 +16,9 @@ def generate(f):
8216 else :
8317 raise Exception ("{}: not a valid file extension" .format (extension ))
8418 template = json .loads (j )
85- description = get_description (template )
86- parameters = get_parameters (template )
87- resources = get_resources (template )
88- outputs = get_outputs (template )
19+ result = core .generate (template , "." .join (f .name .split ("." )[0 :- 1 ]))
20+ click .echo (result )
8921
90- click .echo (Template (TEMPLATE ).render (
91- name = f .name .replace (".{}" .format (extension ), '' ),
92- description = description ,
93- parameters = parameters ,
94- resources = resources ,
95- outputs = outputs ,
96- ))
9722
9823if __name__ == "__main__" :
9924 generate ()
0 commit comments