|
58 | 58 | # |
59 | 59 | # Output log: generate-client.log (overwritten on each run) |
60 | 60 | # |
61 | | -# Prerequisites: Node.js/npm, Java 25, Maven, Perl |
| 61 | +# Prerequisites: Java 25, Maven, Perl (Node.js/npm optional — JAR fallback used if absent) |
62 | 62 | # |
63 | 63 |
|
64 | 64 | set -euo pipefail |
@@ -92,24 +92,17 @@ LOG_FILE="$SCRIPT_DIR/generate-client.log" |
92 | 92 | # Log everything to file and stdout |
93 | 93 | exec > >(tee "$LOG_FILE") 2>&1 |
94 | 94 |
|
95 | | -# Initialize nvm if available |
96 | | -NVM_DIR="$HOME/.nvm" |
97 | | -if [ -s "$NVM_DIR/nvm.sh" ]; then |
98 | | - . "$NVM_DIR/nvm.sh" |
99 | | -fi |
100 | | - |
101 | | -# Ensure openapi-generator-cli is available |
102 | | -if ! command -v openapi-generator-cli &> /dev/null; then |
103 | | - echo "openapi-generator-cli not found. Installing via npm..." |
104 | | - |
105 | | - if ! command -v npm &> /dev/null; then |
106 | | - echo "Error: npm is not installed. Please install Node.js/npm first." |
107 | | - exit 1 |
108 | | - fi |
| 95 | +OPENAPI_GENERATOR_VERSION="7.20.0" |
| 96 | +GENERATOR_CACHE_DIR="${OPENAPI_GENERATOR_CACHE_DIR:-${HOME}/.cache/openapi-generator}" |
| 97 | +GENERATOR_JAR="$GENERATOR_CACHE_DIR/openapi-generator-cli-${OPENAPI_GENERATOR_VERSION}.jar" |
109 | 98 |
|
110 | | - npm install -g @openapitools/openapi-generator-cli |
111 | | - echo "openapi-generator-cli installed successfully." |
| 99 | +if [ ! -f "$GENERATOR_JAR" ]; then |
| 100 | + echo "Downloading openapi-generator-cli ${OPENAPI_GENERATOR_VERSION}..." |
| 101 | + mkdir -p "$GENERATOR_CACHE_DIR" |
| 102 | + curl -fSL -o "$GENERATOR_JAR" \ |
| 103 | + "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/${OPENAPI_GENERATOR_VERSION}/openapi-generator-cli-${OPENAPI_GENERATOR_VERSION}.jar" |
112 | 104 | fi |
| 105 | +openapi-generator-cli() { java -jar "$GENERATOR_JAR" "$@"; } |
113 | 106 |
|
114 | 107 | generate() { |
115 | 108 | local edition="$1" |
@@ -233,11 +226,23 @@ else |
233 | 226 | fi |
234 | 227 |
|
235 | 228 | if [ "$DRY_RUN" = false ]; then |
| 229 | + # Resolve mvn: prefer M2_HOME/MAVEN_HOME, fall back to PATH |
| 230 | + if [ -n "${M2_HOME:-}" ] && [ -x "$M2_HOME/bin/mvn" ]; then |
| 231 | + MVN="$M2_HOME/bin/mvn" |
| 232 | + elif [ -n "${MAVEN_HOME:-}" ] && [ -x "$MAVEN_HOME/bin/mvn" ]; then |
| 233 | + MVN="$MAVEN_HOME/bin/mvn" |
| 234 | + elif command -v mvn >/dev/null 2>&1; then |
| 235 | + MVN="mvn" |
| 236 | + else |
| 237 | + echo "Error: mvn not found. Set M2_HOME or MAVEN_HOME, or add mvn to PATH." |
| 238 | + exit 1 |
| 239 | + fi |
| 240 | + |
236 | 241 | # Apply license headers and stage changes |
237 | 242 | if [ "$VERBOSE" = true ]; then |
238 | | - mvn -f "$SCRIPT_DIR/pom.xml" license:format |
| 243 | + "$MVN" -f "$SCRIPT_DIR/pom.xml" license:format |
239 | 244 | else |
240 | | - mvn -f "$SCRIPT_DIR/pom.xml" license:format -q |
| 245 | + "$MVN" -f "$SCRIPT_DIR/pom.xml" license:format -q |
241 | 246 | fi |
242 | 247 | git -C "$SCRIPT_DIR" add . |
243 | 248 | fi |
0 commit comments