2020-12-03 12:49:01 -05:00
|
|
|
#!/usr/bin/env bash
|
2020-06-18 06:02:05 +08:00
|
|
|
|
|
|
|
|
PACKAGE_NAME=${PACKAGE_NAME:-io.kubernetes.client}
|
|
|
|
|
CLIENT_VERSION=${CLIENT_VERSION:-5.0-SNAPSHOT}
|
2021-02-26 17:40:17 +01:00
|
|
|
GENERATE_APIS=${GENERATE_APIS:-false}
|
2020-06-18 06:02:05 +08:00
|
|
|
OUTPUT_DIR=${OUTPUT_DIR:-java}
|
|
|
|
|
OPENAPI_MODEL_LENGTH=${OPENAPI_MODEL_LENGTH:-}
|
2021-02-26 17:40:17 +01:00
|
|
|
HIDE_GENERATION_TIMESTAMP=${HIDE_GENERATION_TIMESTAMP:-false}
|
|
|
|
|
LIBRARY=${LIBRARY:-okhttp-gson}
|
2020-06-30 14:13:58 +08:00
|
|
|
OPENAPI_SKIP_BASE_INTERFACE=
|
2020-06-18 06:02:05 +08:00
|
|
|
KUBERNETES_CRD_GROUP_PREFIX=
|
|
|
|
|
|
|
|
|
|
print_usage() {
|
|
|
|
|
echo "Usage: generate a java project using input openapi spec from stdin" >& 2
|
|
|
|
|
echo " -c: project version of the generated java project." >& 2
|
2020-06-30 14:13:58 +08:00
|
|
|
echo " -x: skips implementing kubernetes common interface (this is for backward compatibility w/ client-java lower than 9.0.0)" >& 2
|
2020-06-18 06:02:05 +08:00
|
|
|
echo " -n: the prefix of the target CRD's api group to generate." >& 2
|
2020-12-03 12:49:01 -05:00
|
|
|
echo " -g: generate crd apis." >& 2
|
2020-06-18 06:02:05 +08:00
|
|
|
echo " -p: the base package name of the generated java project. " >& 2
|
|
|
|
|
echo " -o: output directory of the generated java project. " >& 2
|
|
|
|
|
echo " -l: keep the n last segments for the generated class name. " >& 2
|
2021-02-26 17:40:17 +01:00
|
|
|
echo " -h: hide generation timestamp" >& 2
|
|
|
|
|
echo " -i: client library" >& 2
|
2020-06-18 06:02:05 +08:00
|
|
|
}
|
|
|
|
|
|
2021-02-26 17:40:17 +01:00
|
|
|
while getopts 'c:g:h:i:n:l:p:o:x' flag; do
|
2020-06-18 06:02:05 +08:00
|
|
|
case "${flag}" in
|
|
|
|
|
c) CLIENT_VERSION="${CLIENT_VERSION}" ;;
|
2020-12-03 12:49:01 -05:00
|
|
|
g) GENERATE_APIS="${OPTARG}" ;;
|
2021-02-26 17:40:17 +01:00
|
|
|
h) HIDE_GENERATION_TIMESTAMP="${OPTARG}" ;;
|
|
|
|
|
i) LIBRARY="${OPTARG}" ;;
|
2020-06-18 06:02:05 +08:00
|
|
|
n) KUBERNETES_CRD_GROUP_PREFIX="${OPTARG}" ;;
|
|
|
|
|
l) OPENAPI_MODEL_LENGTH="${OPTARG}" ;;
|
|
|
|
|
p) PACKAGE_NAME="${OPTARG}" ;;
|
|
|
|
|
o) OUTPUT_DIR="${OPTARG}" ;;
|
2020-06-30 14:13:58 +08:00
|
|
|
x) OPENAPI_SKIP_BASE_INTERFACE=1 ;;
|
2020-06-18 06:02:05 +08:00
|
|
|
*) print_usage
|
|
|
|
|
exit 1 ;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
echo "KUBERNETES_CRD_GROUP_PREFIX: $KUBERNETES_CRD_GROUP_PREFIX" >& 2
|
|
|
|
|
echo "OPENAPI_MODEL_LENGTH: $OPENAPI_MODEL_LENGTH" >& 2
|
|
|
|
|
echo "PACKAGE_NAME: $PACKAGE_NAME" >& 2
|
2020-12-03 12:49:01 -05:00
|
|
|
echo "GENERATE_APIS: $GENERATE_APIS" >& 2
|
2020-06-18 06:02:05 +08:00
|
|
|
echo "CLIENT_VERSION: $CLIENT_VERSION" >& 2
|
|
|
|
|
echo "OUTPUT_DIR: $OUTPUT_DIR" >& 2
|
2021-02-26 17:40:17 +01:00
|
|
|
echo "HIDE_GENERATION_TIMESTAMP: $HIDE_GENERATION_TIMESTAMP" >& 2
|
|
|
|
|
echo "LIBRARY: $LIBRARY" >& 2
|
2020-06-18 06:02:05 +08:00
|
|
|
echo "" >& 2 # empty line
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mkdir -p "${OUTPUT_DIR}"
|
|
|
|
|
|
|
|
|
|
echo 'rendering settings file to /tmp/settings' >& 2
|
|
|
|
|
read -d '' settings << EOF
|
|
|
|
|
export KUBERNETES_BRANCH="${KUBERNETES_BRANCH}"
|
|
|
|
|
|
|
|
|
|
export CLIENT_VERSION="${CLIENT_VERSION}"
|
|
|
|
|
|
|
|
|
|
export PACKAGE_NAME="${PACKAGE_NAME}"
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
echo ${settings} > /tmp/settings
|
|
|
|
|
|
|
|
|
|
echo 'reading input openapi specs' >& 2
|
|
|
|
|
cat > ${OUTPUT_DIR}/swagger.json.unprocessed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
source "/tmp/settings"
|
|
|
|
|
|
|
|
|
|
KUBERNETES_CRD_MODE=true \
|
2020-12-03 12:49:01 -05:00
|
|
|
GENERATE_APIS=${GENERATE_APIS} \
|
2020-06-18 06:02:05 +08:00
|
|
|
OPENAPI_SKIP_FETCH_SPEC=true \
|
|
|
|
|
OPENAPI_MODEL_LENGTH=${OPENAPI_MODEL_LENGTH} \
|
|
|
|
|
KUBERNETES_CRD_GROUP_PREFIX=${KUBERNETES_CRD_GROUP_PREFIX} \
|
2020-06-30 14:13:58 +08:00
|
|
|
OPENAPI_SKIP_BASE_INTERFACE=${OPENAPI_SKIP_BASE_INTERFACE} \
|
2021-02-26 17:40:17 +01:00
|
|
|
HIDE_GENERATION_TIMESTAMP=${HIDE_GENERATION_TIMESTAMP} \
|
|
|
|
|
LIBRARY=${LIBRARY} \
|
2020-06-18 06:02:05 +08:00
|
|
|
$(pwd)/java.sh ${OUTPUT_DIR} /tmp/settings
|