Commit b025be4d authored by Yann Garcia's avatar Yann Garcia
Browse files

Enhance code stub generation

parent 273f5f77
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line


cd ~/AdvantEDGE/tools
# swagger code generator
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen/3.0.29/swagger-codegen-3.0.29.jar

cd ~/AdvantEDGE/

# Java docker machine
docker pull gizmotronic/oracle-java8
docker run -it --rm -v `pwd`:/opt/local/etsi gizmotronic/oracle-java8 /bin/bash

# Using command line
cd /opt/local/etsi
java -jar ./tools/swagger-codegen-cli-3.0.29.jar generate -h
java -jar ./tools/swagger-codegen-cli-3.0.29.jar generate --api-package ./tools/swagger-temlates/templates/go-server/ -i ./go-apps/meep-dai/api/swagger.yaml -l go-server -o ./out/go-server
@@ -12,3 +16,15 @@ java -jar ./tools/swagger-codegen-cli-3.0.29.jar generate --api-package ./tools/
java -jar ./tools/swagger-codegen-cli-3.0.29.jar generate --api-package ./tools/swagger-temlates/templates/go/ -i ./examples/demo4-ue/src/demo-server/backend/api/swagger.yaml -l go -o ./out/demo-server
java -jar ./tools/swagger-codegen-cli-3.0.29.jar generate --api-package ./tools/swagger-temlates/templates/go/ -i ./examples/demo4-ue/src/onboarded-demo/api/swagger.yaml -l go -o ./out/onboarded-demo
chown -R 1000:1000 ./out

# using script with required MEC xxx already cloned:
#   gs011-app-enablement-api
#   gs012-rnis-api
#   gs013-location-api
#   gs014-ue-identity-api
#   gs015-bandwith-mgmt-api
#   gs016-dev-app-api
#   gs028-wai-api
#   gs030-vis-api
docker run -it --rm -v `pwd`:/opt/local/etsi gizmotronic/oracle-java8 /bin/bash -c "cd /opt/local/etsi && ./generate_stub.sh"

tools/generate_stub.sh

0 → 100755
+107 −0
Original line number Diff line number Diff line
#!/bin/bash

#set -e
set -vx

################# Functions ###########################
# Do alignment for AdvantEDGE update
function advantedge_aligner() {
    CUR_DIR=`pwd`
    cd $CUR_DIR/$OUT/$CMD_LANG_SERVER_GOLANG
    for dir in $PROJECTS
    do
        cd $CUR_DIR/$OUT/$CMD_LANG_SERVER_GOLANG/$dir
	if [ -d go ]
	then
            mv go server
            cd server
            for f in `ls *.go`
            do
		sed --in-place 's/package swagger/package server/g' $f
            done
	fi
    done

    cd $CUR_DIR/$OUT/$CMD_LANG_CLIENT_GOLANG
    for dir in $PROJECTS
    do
        cd $CUR_DIR/$OUT/$CMD_LANG_CLIENT_GOLANG/$dir
        for f in `ls *.go`
        do
            sed --in-place 's/package swagger/package client/g' $f
        done
    done

}

# Generate client/server stubs
function generate_stub() {
    # Process all MEC APIs
    for dir in $PROJECTS
    do
        # Update folder
        cd $dir
        git checkout .
        git pull --rebase=true
        cd -
        # Acquire full YAML file name
        IN_FILE=`ls ${dir}/*.yaml`
        for f in $IN_FILE
        do
            # Downgrade file
            downgrade_open_api_file $f
            $JAVA_CMD --api-package ${JAVA_PACKAGE_SERVER} -l $CMD_LANG_SERVER_GOLANG -i ./$f -o $OUT/$CMD_LANG_SERVER_GOLANG/$dir/`basename $f .yaml`
            $JAVA_CMD --api-package ${JAVA_PACKAGE_CLIENT_GOLANG} -l $CMD_LANG_CLIENT_GOLANG -i ./$f -o $OUT/$CMD_LANG_CLIENT_GOLANG/$dir/`basename $f .yaml`
            $JAVA_CMD --api-package ${JAVA_PACKAGE_CLIENT_PYTHON} -l $CMD_LANG_CLIENT_PYTHON -i ./$f -o $OUT/$CMD_LANG_CLIENT_PYTHON/$dir/`basename $f .yaml`
        done
    done

    # Set output rights
    chown -R 1000:1000 $OUT
}

# Downgrade OpenAPI file
function downgrade_open_api_file() {
    PARAM=$1
    sed --in-place 's/3\.1\.0/3\.0\.0/g' $PARAM
    sed --in-place 's/localhost/localhost\/sandboxname/g' $PARAM
    sed --in-place 's/examples/example/g' $PARAM
    sed --in-place '/contentMediaType/d' $PARAM
    sed --in-place '/jsonSchemaDialect/d' $PARAM
    sed --in-place '/contentEncoding/d' $PARAM
}

################# Starting point ###########################
clear

# Install git not present in the gizmotronic/oracle-java8 image
apt-get update
apt install -y git

# Setup variables
PROJECTS=`ls -d gs*`
JAVA_CMD='java -jar ./swagger-codegen-cli-3.0.29.jar generate'
TEMPLATE_PATH=./swagger-temlates/templates
CMD_TEMPLATE_SERVER=go-server
CMD_TEMPLATE_CLIENT_GOLANG=go
CMD_TEMPLATE_CLIENT_PYTHON=python
JAVA_PACKAGE_SERVER=${TEMPLATE_PATH}/${CMD_TEMPLATE_SERVER}/
JAVA_PACKAGE_CLIENT_GOLANG=${TEMPLATE_PATH}/${CMD_TEMPLATE_CLIENT_GOLANG}/
JAVA_PACKAGE_CLIENT_PYTHON=${TEMPLATE_PATH}/${CMD_TEMPLATE_CLIENT_PYTHON}/
CMD_LANG_SERVER_GOLANG=go-server
CMD_LANG_CLIENT_GOLANG=go
CMD_LANG_CLIENT_PYTHON=python
OUT=./out

# Create empty output folder
if [ -d $OUT ]
then
    rm -fr $OUT
fi
mkdir -p $OUT

generate_stub

advantedge_aligner

exit 0