1717def parse_args (args : List [str ]) -> argparse .Namespace :
1818 """Parse arguments from the cli"""
1919 parser = argparse .ArgumentParser (prog = "publish-shared-event" , description = "List the content of a folder" )
20- parser .add_argument ("-r" , dest = "region" , help = "Set AWS Region" )
21- parser .add_argument ("-f" , dest = "lambda_name" , help = "Name of the lambda function" )
22- parser .add_argument ("-e" , dest = "event_source" , help = "Event source" )
23- parser .add_argument ("--list " , help = "List of supported event sources" , action = "store_true " )
24- parser .add_argument ("--filtered -list" , help = "Filtered list " )
25- parser .add_argument ("-n " , dest = "example_name " , help = "Set the example name " )
20+ parser .add_argument ("-r" , "-region" , dest = "region" , help = "Set AWS Region" )
21+ parser .add_argument ("-f" , "--lambda-name" , dest = "lambda_name" , help = "Name of the lambda function" )
22+ parser .add_argument ("-e" , "--event" , dest = "event_source" , help = "Event source" )
23+ parser .add_argument ("-n " , "-- event-name" , dest = "event_name" , help = "Event name " )
24+ parser .add_argument ("-l" , "- -list" , dest = "list" , help = "List of supported event sources" , action = "store_true " )
25+ parser .add_argument ("--filtered-list " , dest = "filtered_list " , help = "Filtered list " )
2626 return parser .parse_args (args )
2727
2828
@@ -67,16 +67,16 @@ def create_registry(schemas_client):
6767 print (f"Registry with name '{ registry_name } ' already exists." )
6868
6969
70- def update_schema (schemas_client , lambda_name : str , test_event : str , example_name : Optional [str ]):
70+ def update_schema (schemas_client , lambda_name : str , test_event : str , event_name : Optional [str ]):
7171 """Create or update shareable test event for the specified lambda_name"""
7272 schema_name = f"_{ lambda_name } -schema"
73- example_name , event = build_test_event (test_event , example_name )
73+ name , event = build_test_event (event_name , test_event )
7474 try :
7575 existing_schema = schemas_client .describe_schema (
7676 RegistryName = registry_name ,
7777 SchemaName = schema_name ,
7878 )
79- content = generate_updated_schema_content (json .loads (existing_schema ["Content" ]), example_name , event )
79+ content = generate_updated_schema_content (json .loads (existing_schema ["Content" ]), name , event )
8080 print (f"Schema '{ schema_name } ' already exists, updating..." )
8181 schemas_client .update_schema (
8282 RegistryName = registry_name ,
@@ -86,7 +86,7 @@ def update_schema(schemas_client, lambda_name: str, test_event: str, example_nam
8686 )
8787
8888 except schemas_client .exceptions .NotFoundException :
89- content = generate_new_schema_content (example_name , event )
89+ content = generate_new_schema_content (event_name , event )
9090 schemas_client .create_schema (
9191 RegistryName = registry_name ,
9292 SchemaName = schema_name ,
@@ -96,37 +96,42 @@ def update_schema(schemas_client, lambda_name: str, test_event: str, example_nam
9696 )
9797
9898
99- def build_test_event (test_event : str , example_name : Optional [str ]) -> Tuple [str , Dict ]:
99+ def build_test_event (event_name : Optional [str ], test_event : str ) -> Tuple [str , Dict ]:
100+ """Load the local test event and return the event name and the parsed event"""
100101 path = get_test_event_path (test_event )
101- example_name = example_name or path .name .replace (".json" , "" )
102+ event_name = event_name or path .name .replace (".json" , "" )
102103 event = json .loads (path .read_text ())
103- return example_name , event
104+ return event_name , event
104105
105106
106107def get_test_event_path (test_event : str ) -> Path :
108+ """Get the Path for the local event and fall back to one of the standard test events"""
107109 if exists (test_event ): # Allows for locally defined test events
108110 return Path (test_event )
109111 else : # One of the standard test events
110112 return Path (template_root + test_event )
111113
112114
113- def generate_updated_schema_content (schema : Dict , example_name : str , event : Dict ) -> str :
114- """Appends or updates the existing schema examples"""
115- schema ["components" ]["examples" ][example_name ] = {"value" : event }
115+ def generate_updated_schema_content (schema : Dict , event_name : str , event : Dict ) -> str :
116+ """Updates or appends to the existing schema examples"""
117+ schema ["components" ]["examples" ][event_name ] = {"value" : event }
116118 return json .dumps (schema )
117119
118120
119- def generate_new_schema_content (example_name : str , event : Dict ) -> str :
121+ def generate_new_schema_content (event_name : str , event : Dict ) -> str :
120122 """Generates an event bridge schema from the test event file"""
121123 schema = {
122124 "openapi" : "3.0.0" ,
123125 "info" : {
124126 "version" : "1.0.0" ,
125127 "title" : "Event" ,
126128 },
129+ "paths" : {},
127130 "components" : {
131+ # Could also include a collection of JSONSchemaDraft4
132+ # "schemas" : { "Event": build_json_schema(event) },
128133 "examples" : {
129- example_name : {
134+ event_name : {
130135 "value" : event ,
131136 }
132137 },
@@ -154,7 +159,7 @@ def main():
154159 test_event = args .event_source or get_test_event (list_of_events )
155160 schemas_client = session .client ("schemas" )
156161 create_registry (schemas_client )
157- update_schema (schemas_client , lambda_name , test_event , args .example_name )
162+ update_schema (schemas_client , lambda_name , test_event , args .event_name )
158163
159164
160165if __name__ == "__main__" :
0 commit comments