diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 943ae1a2927..7faa46aba34 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,19 +6,19 @@ set -euo pipefail GEN_DIR=${GEN_DIR:-/opt/swagger-codegen} JAVA_OPTS=${JAVA_OPTS:-"-Xmx1024M -DloggerPath=conf/log4j.properties"} -codegen="${GEN_DIR}/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" +cli="${GEN_DIR}/modules/swagger-codegen-cli" +codegen="${cli}/target/swagger-codegen-cli.jar" +cmdsrc="${cli}/src/main/java/io/swagger/codegen/cmd" -case "$1" in - generate|help|langs|meta|config-help) - # If ${GEN_DIR} has been mapped elsewhere from default, and that location has not been built - if [[ ! -f "${codegen}" ]]; then - (cd ${GEN_DIR} && exec mvn -am -pl "modules/swagger-codegen-cli" package) - fi - command=$1 - shift - exec java ${JAVA_OPTS} -jar ${codegen} ${command} "$@" - ;; - *) # Any other commands, e.g. docker run imagename ls -la or docker run -it imagename /bin/bash - exec "$@" - ;; -esac +pattern="@Command(name = \"$1\"" +if expr "x$1" : 'x[a-z][a-z-]*$' > /dev/null && fgrep -qe "$pattern" "$cmdsrc"/*.java; then + # If ${GEN_DIR} has been mapped elsewhere from default, and that location has not been built + if [[ ! -f "${codegen}" ]]; then + (cd "${GEN_DIR}" && exec mvn -am -pl "modules/swagger-codegen-cli" package) + fi + command=$1 + shift + exec java ${JAVA_OPTS} -jar "${codegen}" "${command}" "$@" +else + exec "$@" +fi