-
Notifications
You must be signed in to change notification settings - Fork 0
/
view_resources_and_methods.py
48 lines (42 loc) · 2.16 KB
/
view_resources_and_methods.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import yaml
import csv
import sys
def extract_last_token(reference):
# Split by '/' and take the last part, then split by '.' and take the last part
return reference.split('/')[-1].split('.')[-1]
def generate_csv_from_yaml(yaml_file_path, csv_file_path):
# Read the YAML file
with open(yaml_file_path, 'r') as file:
data = yaml.safe_load(file)
# Open a new CSV file to write to
with open(csv_file_path, 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
# Write the header row
csvwriter.writerow(['resourceId', 'sqlVerb', 'ref', 'path', 'tokens', 'operationId', 'respSchema'])
# Navigate through the YAML content
for resource_name, resource_content in data['components']['x-stackQL-resources'].items():
resource_id = resource_content['id']
# Loop through SQL verbs under each resource
for sql_verb, verb_details in resource_content.get('sqlVerbs', {}).items():
for verb_detail in verb_details:
# Extract the last part of $ref
ref = extract_last_token(verb_detail['$ref'])
# Extract the path
path = verb_detail['path']
# Extract the tokens
tokens = verb_detail['tokens']
# Extract the operationId
operation_id = verb_detail['operationId']
# Extract the last token of respSchema if it exists
resp_schema = ''
if 'respSchema' in verb_detail and verb_detail['respSchema']:
resp_schema = extract_last_token(verb_detail['respSchema'][0]['$ref'])
# Write to CSV
csvwriter.writerow([resource_id, sql_verb, ref, path, tokens, operation_id, resp_schema])
# Check for command-line arguments
if len(sys.argv) < 3:
print("Usage: python view_resources_and_methods.py inputproviderdevfile outputcsvfile")
else:
yaml_file_path = sys.argv[1]
csv_file_path = sys.argv[2]
generate_csv_from_yaml(yaml_file_path, csv_file_path)