Files
ziti/scripts/generate_rest.sh
T
Andrew Martinez b562fb5c07 splits API specs into composible modules
- splits Open API 2.0 (swagger) into client/management APIs
- uses go-swaggers flatten capabilities
- uses newer version of go-swagger (v0.27.0)
- introduces /edge/client/v1, /edge/management/v1
- non-prefixed URLs default to /edge/client/v1
- splits some shared management/client API handlers
- renames some REST models to "client" instead of "limited"
- passes all apitests, fails dataflow upd test (main fails this as well)
- updates generate rest script for powershell
- todo: test generate rest script for bash
- todo: use xweb (different branch)
2021-05-04 11:30:32 -04:00

92 lines
3.2 KiB
Bash
Executable File

#!/bin/bash -e
command -v swagger >/dev/null 2>&1 || {
echo >&2 "Command 'swagger' not installed. See: https://github.com/go-swagger/go-swagger for installation"
exit 1
}
scriptPath=$(realpath $0)
scriptDir=$(dirname "$scriptPath")
zitiEdgeDir=$(realpath "$scriptDir/..")
clientSourceSpec=$(realpath "$zitiEdgeDir/specs/source/client.yml")
clientSwagSpec=$(realpath "$zitiEdgeDir/specs/client.yml")
managementSourceSpec=$(realpath "$zitiEdgeDir/specs/management.yml")
managementSwagSpec=$(realpath "$zitiEdgeDir/specs/management.yml")
copyrightFile=$(realpath "$scriptDir/template.copyright.txt")
echo "...flattening client spec"
swagger flatten "$clientSourceSpec" -o "$clientSwagSpec" --format yaml
echo "...flattening management spec"
swagger flatten "$managementSourceSpec" -o "$managementSwagSpec" --format yaml
oldServerPath=$(realpath "$zitiEdgeDir/rest_server")
echo "...removing any existing server from $oldServerPath"
rm -rf "$oldServerPath"
oldClientPath=$(realpath "$zitiEdgeDir/rest_client")
echo "...removing any existing client from $oldClientPath"
rm -rf "$oldClientPath"
clientServerPath=$(realpath "$zitiEdgeDir/rest_client_api_server")
echo "...removing any existing server from $clientServerPath"
rm -rf "$clientServerPath"
mkdir -p "$clientServerPath"
clientClientPath=$(realpath "$zitiEdgeDir/rest_client_api_client")
echo "...removing any existing client from $clientClientPath"
rm -rf "$clientClientPath"
mkdir -p "$clientClientPath"
managementServerPath=$(realpath "$zitiEdgeDir/rest_management_api_server")
echo "...removing any existing server from $managementServerPath"
rm -rf "$managementServerPath"
mkdir -p "$managementServerPath"
managementClientPath=$(realpath "$zitiEdgeDir/rest_management_api_client")
echo "...removing any existing client from $managementClientPath"
rm -rf "$managementClientPath"
mkdir -p "$managementClientPath"
modelPath=$(realpath "$zitiEdgeDir/rest_model")
echo "...removing any existing model from $modelPath"
rm -rf "$modelPath"
mkdir -p "$modelPath"
echo "...generating client api server"
swagger generate server --exclude-main -f "$clientSwagSpec" -s rest_client_api_server -t "$zitiEdgeDir" -q -r "$copyrightFile" -m "rest_model"
exit_status=$?
if [ ${exit_status} -ne 0 ]; then
echo "Failed to generate client api server. See above."
exit "${exit_status}"
fi
echo "...generating client api client"
swagger generate client -f "$clientSwagSpec" -c rest_client_api_client -t "$zitiEdgeDir" -q -r "$copyrightFile" -m "rest_model"
exit_status=$?
if [ ${exit_status} -ne 0 ]; then
echo "Failed to generate client api client. See above."
exit "${exit_status}"
fi
echo "...generating management api server"
swagger generate server --exclude-main -f "$managementSwagSpec" -s rest_management_api_server -t "$zitiEdgeDir" -q -r "$copyrightFile" -m "rest_model"
exit_status=$?
if [ ${exit_status} -ne 0 ]; then
echo "Failed to generate management api server. See above."
exit "${exit_status}"
fi
echo "...generating management api management"
swagger generate client -f "$managementSwagSpec" -c rest_management_api_client -t "$zitiEdgeDir" -q -r "$copyrightFile" -m "rest_model"
exit_status=$?
if [ ${exit_status} -ne 0 ]; then
echo "Failed to generate management api client. See above."
exit "${exit_status}"
fi