42 lines
1.3 KiB
Bash
42 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
# safety measure
|
|
if [ -d output ]; then
|
|
echo "output directory already exist"
|
|
echo "remove manually and try again"
|
|
fi
|
|
|
|
|
|
# PACKAGE_NAME will be loaded here
|
|
. ENV
|
|
|
|
# generate server code and endpoint stubs from openapi.yaml
|
|
docker run -it --rm -v $PWD:/work -u $UID openapitools/openapi-generator:cli-v5.1.0 \
|
|
generate -i /work/openapi.yaml -g aspnetcore -o /work/output \
|
|
--package-name $PACKAGE_NAME \
|
|
--additional-properties="packageVersion=0.0.1,aspnetCoreVersion=5.0,operationIsAsync=true,modelPropertyNaming=camelCase,\
|
|
generateBody=false,classModifier=abstract,operationModifier=abstract"
|
|
|
|
# patch DbService registering into generated startup code
|
|
sed -i output/src/$PACKAGE_NAME/Startup \
|
|
-e 's/\(using '$PACKAGE_NAME'.OpenApi;\)/\1\nusing '$PACKAGE_NAME'.Services;/'\
|
|
-e 's#\(// Add framework services.\)#services.AddTransient<IDbService, DbService>();\n\1#'
|
|
|
|
# create directories for manually developed code
|
|
mkdir output/src/$PACKAGE_NAME/Implementations
|
|
mkdir output/src/$PACKAGE_NAME/Services
|
|
|
|
# copy database service into source code try
|
|
cp DbService.cs output/src/$PACKAGE_NAME/Services
|
|
|
|
# generate endpoint code from openapi.yaml
|
|
python3.10 generate.py
|
|
|
|
# copy endpoint code into source code try
|
|
cp regular.cs output/src/$PACKAGE_NAME/Implementations
|
|
|
|
|
|
|
|
|
|
|