generate all script, service integration and injection

This commit is contained in:
Wolfgang Hottgenroth
2021-11-22 19:07:46 +01:00
parent 590e9da904
commit bd85599a98
8 changed files with 132 additions and 21 deletions

View File

@ -4,9 +4,9 @@ import glob
import argparse
import os
import re
import json
from yaml.loader import SafeLoader
from generateHelper import CsOperationNameConverter, OpenApiExtractRefType
from generateHelper import CsOperationNameConverter, OpenApiExtractRefType, CsTypeConverter
parser = argparse.ArgumentParser(description="generate.py")
parser.add_argument('--apiDefinitionFile', '-a',
@ -91,9 +91,18 @@ for path in apiDefinition['paths'].values():
if not statementChecker[method].match(statement):
raise Exception(f"Invalid statement {statement} for method {method}")
inputType = None
bodyInputType = {}
if 'requestBody' in operation:
inputType = OpenApiExtractRefType(operation['requestBody']['content']['application/json']['schema']['$ref'])
bodyInputTypeName = OpenApiExtractRefType(operation['requestBody']['content']['application/json']['schema']['$ref'])
bodyInputType = { 'apiName': bodyInputTypeName, 'csName': CsOperationNameConverter(bodyInputTypeName) }
paramsInputTypes =[]
if 'parameters' in operation:
for paramsInputType in operation['parameters']:
paramsInputType['type'] = CsTypeConverter(paramsInputType['schema']['type'])
del paramsInputType['schema']
paramsInputTypes.append(paramsInputType)
operations.append({
'description': description,
'method':method,
@ -103,9 +112,10 @@ for path in apiDefinition['paths'].values():
'allSelector': operation['operationId'].endswith('all'),
'byIdSelector': operation['operationId'].endswith('byid'),
'statement': statement,
'inputType': { 'apiName': inputType, 'csName': CsOperationNameConverter(inputType) } if inputType else {}
'bodyInputType': bodyInputType,
'paramsInputTypes': paramsInputTypes
})
print(f"{operations=}")
#print(f"{operations=}")
apiDefinition["operations"] = operations
types = {}
@ -123,9 +133,10 @@ for (typeName, typeDefinition) in apiDefinition['components']['schemas'].items()
'csName': typeName.capitalize(),
'properties': typeProperties
}
print(f"{types=}")
#print(f"{types=}")
apiDefinition['types'] = types
print(json.dumps(apiDefinition, indent=4))
for f in glob.glob(args.template, recursive=True):
print(f"process {f}")
tmpl = Template(file=f, searchList=[apiDefinition])