Loading tools/open_api_script/generate_all_capif_apis.sh +87 −9 Original line number Diff line number Diff line #!/bin/bash # This script generates all CAPIF APIs defined in the 3GPP TS 29222 series. # This script must setup APIS_FOLDER variable to point to the folder where # all the OpenAPI files are stored. (them must be placed under openapi-generator). Copy them to that folder # before running this script. # OPEN_API_GENERATOR_FOLDER variable must point to the openapi-generator folder # Steps to run this script: # 1. Install Docker # 2. Clone openapi-generator from https://github.com/OpenAPITools/openapi-generator # 3. Copy all OpenAPI files to a folder inside the openapi-generator folder. # 4. Run this script with the desired options. # Mostrar ayuda show_help() { echo "Usage: $0 [options]" echo "" echo "Options:" echo " -a <apis_folder> Folder containing OpenAPI files (default: APIs)" echo " -c <composite_project> Name of the output project folder (default: CAPIF-generated-new)" echo " -g <generator_folder> Path to openapi-generator folder (default: /path/to/openapi-generator)" echo " -h Show this help message" echo "" echo "Steps to run this script:" echo " 1. Install Docker" echo " 2. Clone openapi-generator from https://github.com/OpenAPITools/openapi-generator" echo " 3. Copy all CAPIF API files to a folder inside the openapi-generator folder." echo " 4. Run this script with the desired options." echo "" echo "Example:" echo " $0 -a APIs -c MyProject -g /path/to/openapi-generator" exit 0 } # Parámetros por defecto APIS_FOLDER=APIs COMPOSITE_PROJECT=CAPIF-latest OPEN_API_GENERATOR_FOLDER=/path/to/openapi-generator # Leer parámetros while getopts ":a:c:g:h" opt; do case $opt in a) APIS_FOLDER="$OPTARG" ;; c) COMPOSITE_PROJECT="$OPTARG" ;; g) OPEN_API_GENERATOR_FOLDER="$OPTARG" ;; h) show_help ;; \?) echo "Invalid option: -$OPTARG" >&2 show_help ;; :) echo "Option -$OPTARG requires an argument." >&2 show_help ;; esac done # Local variables ENDPOINTS=() SERVICE_NAMES=() COMPOSITE_PROJECT=CAPIF-composite-test2 OUTPUT_HOST_BASE_DIRECTORY=out/CAPIF-composite-test2 OUTPUT_DOCKER_BASE_DIRECTORY=/gen/$OUTPUT_HOST_BASE_DIRECTORY OUTPUT_HOST_BASE_DIRECTORY=out/$COMPOSITE_PROJECT DOCKER_COMPOSE_FILENAME=$OUTPUT_HOST_BASE_DIRECTORY/docker-compose-test.yml NGINX_CONF_FILE=$OUTPUT_HOST_BASE_DIRECTORY/nginx.conf # Change to openapi-generator directory (limitation at run-in-docker.sh script) cd $OPEN_API_GENERATOR_FOLDER # Validar directorios if [ ! -d "$APIS_FOLDER" ]; then echo "APIs folder '$APIS_FOLDER' does not exist." exit 1 fi if [ ! -d "$OPEN_API_GENERATOR_FOLDER" ]; then echo "OpenAPI generator folder '$OPEN_API_GENERATOR_FOLDER' does not exist." exit 1 fi echo "docker compose file: $DOCKER_COMPOSE_FILENAME" # Create output folder mkdir -p $OUTPUT_HOST_BASE_DIRECTORY # rm $DOCKER_COMPOSE_FILENAME || true Loading @@ -20,17 +97,16 @@ function createPythonServer { SWAGGER_FILE=$1 API_NAME=$(basename -s .yaml $SWAGGER_FILE) ENDPOINT=$(awk '/- url: /{ print $3 }' $SWAGGER_FILE|awk -F / '{ print $2}') OUTPUT=$OUTPUT_DOCKER_BASE_DIRECTORY/$API_NAME/ OUTPUT=$OUTPUT_HOST_BASE_DIRECTORY/$API_NAME/ echo "SWAGGER_FILE: $SWAGGER_FILE" echo "API_NAME: $API_NAME" echo "ENDPOINT: $ENDPOINT" echo "OUTPUT DIRECTORY: $OUTPUT" ENDPOINTS+=($ENDPOINT) SERVICE_NAME=$(echo $ENDPOINT | sed 's/-/_/g') # SERVICE_NAMES+=($SERVICE_NAME) ./run-in-docker.sh generate -i $SWAGGER_FILE \ $OPEN_API_GENERATOR_FOLDER/run-in-docker.sh generate -i $SWAGGER_FILE \ -g python-flask \ -o $OUTPUT \ -o /gen/$OUTPUT \ --package-name=$SERVICE_NAME cat >> $DOCKER_COMPOSE_FILENAME << EOF $ENDPOINT: Loading @@ -40,8 +116,9 @@ function createPythonServer { EOF } CAPIF_FILES=$(ls capif|awk '/TS29222/{ print "capif/"$0 }') echo "Generating services for APIs in $APIS_FOLDER" CAPIF_FILES=$(ls $APIS_FOLDER|awk -v dir="$APIS_FOLDER" '/TS29222/{ print dir "/"$0 }') echo "CAPIF_FILES: $CAPIF_FILES" for CAPIF_FILE in ${CAPIF_FILES[*]} do createPythonServer $CAPIF_FILE Loading Loading @@ -90,3 +167,4 @@ cat >> $NGINX_CONF_FILE << EOF } EOF echo "Check all generated services under $OPEN_API_GENERATOR_FOLDER/$OUTPUT_HOST_BASE_DIRECTORY folder" No newline at end of file Loading
tools/open_api_script/generate_all_capif_apis.sh +87 −9 Original line number Diff line number Diff line #!/bin/bash # This script generates all CAPIF APIs defined in the 3GPP TS 29222 series. # This script must setup APIS_FOLDER variable to point to the folder where # all the OpenAPI files are stored. (them must be placed under openapi-generator). Copy them to that folder # before running this script. # OPEN_API_GENERATOR_FOLDER variable must point to the openapi-generator folder # Steps to run this script: # 1. Install Docker # 2. Clone openapi-generator from https://github.com/OpenAPITools/openapi-generator # 3. Copy all OpenAPI files to a folder inside the openapi-generator folder. # 4. Run this script with the desired options. # Mostrar ayuda show_help() { echo "Usage: $0 [options]" echo "" echo "Options:" echo " -a <apis_folder> Folder containing OpenAPI files (default: APIs)" echo " -c <composite_project> Name of the output project folder (default: CAPIF-generated-new)" echo " -g <generator_folder> Path to openapi-generator folder (default: /path/to/openapi-generator)" echo " -h Show this help message" echo "" echo "Steps to run this script:" echo " 1. Install Docker" echo " 2. Clone openapi-generator from https://github.com/OpenAPITools/openapi-generator" echo " 3. Copy all CAPIF API files to a folder inside the openapi-generator folder." echo " 4. Run this script with the desired options." echo "" echo "Example:" echo " $0 -a APIs -c MyProject -g /path/to/openapi-generator" exit 0 } # Parámetros por defecto APIS_FOLDER=APIs COMPOSITE_PROJECT=CAPIF-latest OPEN_API_GENERATOR_FOLDER=/path/to/openapi-generator # Leer parámetros while getopts ":a:c:g:h" opt; do case $opt in a) APIS_FOLDER="$OPTARG" ;; c) COMPOSITE_PROJECT="$OPTARG" ;; g) OPEN_API_GENERATOR_FOLDER="$OPTARG" ;; h) show_help ;; \?) echo "Invalid option: -$OPTARG" >&2 show_help ;; :) echo "Option -$OPTARG requires an argument." >&2 show_help ;; esac done # Local variables ENDPOINTS=() SERVICE_NAMES=() COMPOSITE_PROJECT=CAPIF-composite-test2 OUTPUT_HOST_BASE_DIRECTORY=out/CAPIF-composite-test2 OUTPUT_DOCKER_BASE_DIRECTORY=/gen/$OUTPUT_HOST_BASE_DIRECTORY OUTPUT_HOST_BASE_DIRECTORY=out/$COMPOSITE_PROJECT DOCKER_COMPOSE_FILENAME=$OUTPUT_HOST_BASE_DIRECTORY/docker-compose-test.yml NGINX_CONF_FILE=$OUTPUT_HOST_BASE_DIRECTORY/nginx.conf # Change to openapi-generator directory (limitation at run-in-docker.sh script) cd $OPEN_API_GENERATOR_FOLDER # Validar directorios if [ ! -d "$APIS_FOLDER" ]; then echo "APIs folder '$APIS_FOLDER' does not exist." exit 1 fi if [ ! -d "$OPEN_API_GENERATOR_FOLDER" ]; then echo "OpenAPI generator folder '$OPEN_API_GENERATOR_FOLDER' does not exist." exit 1 fi echo "docker compose file: $DOCKER_COMPOSE_FILENAME" # Create output folder mkdir -p $OUTPUT_HOST_BASE_DIRECTORY # rm $DOCKER_COMPOSE_FILENAME || true Loading @@ -20,17 +97,16 @@ function createPythonServer { SWAGGER_FILE=$1 API_NAME=$(basename -s .yaml $SWAGGER_FILE) ENDPOINT=$(awk '/- url: /{ print $3 }' $SWAGGER_FILE|awk -F / '{ print $2}') OUTPUT=$OUTPUT_DOCKER_BASE_DIRECTORY/$API_NAME/ OUTPUT=$OUTPUT_HOST_BASE_DIRECTORY/$API_NAME/ echo "SWAGGER_FILE: $SWAGGER_FILE" echo "API_NAME: $API_NAME" echo "ENDPOINT: $ENDPOINT" echo "OUTPUT DIRECTORY: $OUTPUT" ENDPOINTS+=($ENDPOINT) SERVICE_NAME=$(echo $ENDPOINT | sed 's/-/_/g') # SERVICE_NAMES+=($SERVICE_NAME) ./run-in-docker.sh generate -i $SWAGGER_FILE \ $OPEN_API_GENERATOR_FOLDER/run-in-docker.sh generate -i $SWAGGER_FILE \ -g python-flask \ -o $OUTPUT \ -o /gen/$OUTPUT \ --package-name=$SERVICE_NAME cat >> $DOCKER_COMPOSE_FILENAME << EOF $ENDPOINT: Loading @@ -40,8 +116,9 @@ function createPythonServer { EOF } CAPIF_FILES=$(ls capif|awk '/TS29222/{ print "capif/"$0 }') echo "Generating services for APIs in $APIS_FOLDER" CAPIF_FILES=$(ls $APIS_FOLDER|awk -v dir="$APIS_FOLDER" '/TS29222/{ print dir "/"$0 }') echo "CAPIF_FILES: $CAPIF_FILES" for CAPIF_FILE in ${CAPIF_FILES[*]} do createPythonServer $CAPIF_FILE Loading Loading @@ -90,3 +167,4 @@ cat >> $NGINX_CONF_FILE << EOF } EOF echo "Check all generated services under $OPEN_API_GENERATOR_FOLDER/$OUTPUT_HOST_BASE_DIRECTORY folder" No newline at end of file