Skip to content

Commit 702e7dc

Browse files
committed
feat(shared-event): Add long form cli arguments
1 parent 0592dca commit 702e7dc

6 files changed

Lines changed: 36 additions & 30 deletions

File tree

event-schema/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# AWS Lambda Publish Sharable Events
2-
[![codecov](https://codecov.io/gh/michaelbrewer/aws-lambda-events/branch/main/graph/badge.svg?token=J433NUHYNT)](https://codecov.io/gh/michaelbrewer/aws-lambda-events)
32
[![aws-lambda-publish-shared-event](https://github.com/michaelbrewer/aws-lambda-events/actions/workflows/python.yml/badge.svg)](https://github.com/michaelbrewer/aws-lambda-events/actions/workflows/python.yml)
3+
[![codecov](https://codecov.io/gh/michaelbrewer/aws-lambda-events/branch/main/graph/badge.svg?token=J433NUHYNT)](https://codecov.io/gh/michaelbrewer/aws-lambda-events)
44

55
## Installation
66

event-schema/aws_lambda_publish_shared_event/__main__.py

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
def 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

106107
def 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

160165
if __name__ == "__main__":

event-schema/poetry.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

event-schema/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
2-
name = "lambda-event-schema-tool"
3-
version = "0.8.0"
2+
name = "aws-lambda-publish-shared-event"
3+
version = "0.9.0"
44
description = "Creating Shareable test events"
55
license = "MIT"
66
authors = ["Michael Brewer"]

event-schema/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
setuptools.setup(
99
name="aws-lambda-publish-shared-event",
10-
version="0.8.0",
10+
version="0.9.0",
1111
entry_points={
1212
"console_scripts": ["publish-shared-event=aws_lambda_publish_shared_event.__main__:main"],
1313
},

event-schema/tests/test_main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ def test_generate_new_schema_content():
6868
expected = {
6969
"openapi": "3.0.0",
7070
"info": {"version": "1.0.0", "title": "Event"},
71+
"paths": {},
7172
"components": {
7273
"examples": {
7374
example_name: {"value": event},

0 commit comments

Comments
 (0)