@@ -19,10 +19,12 @@ usage() {
1919 echo " -c, --client NAME Client class name (default: ${DEFAULT_CLIENT_NAME} )"
2020 echo " -h, --help Show this help message"
2121 echo " "
22- echo " This script will update the following directories:"
23- echo " - ../api"
24- echo " - ../src"
25- echo " - ../docs"
22+ echo " This script will update the following:"
23+ echo " - ../api (OpenAPI spec)"
24+ echo " - ../src (generated source code)"
25+ echo " - ../docs (API documentation)"
26+ echo " - ../pom.xml (dependencies and version)"
27+ echo " - ../build.gradle (dependencies and version)"
2628 echo " "
2729 echo " Examples:"
2830 echo " $0 # Use defaults"
@@ -152,6 +154,169 @@ if [[ -d "${TEMP_OUTPUT_DIR}/docs" ]]; then
152154 cp " ${TEMP_OUTPUT_DIR} /docs/" * .md " ${DOCS_DIR} /"
153155fi
154156
157+ # Function to update dependencies in pom.xml
158+ update_pom_dependencies () {
159+ local generated_pom=" ${TEMP_OUTPUT_DIR} /pom.xml"
160+ local target_pom=" ${PROJECT_ROOT} /pom.xml"
161+
162+ if [[ ! -f " ${generated_pom} " ]] || [[ ! -f " ${target_pom} " ]]; then
163+ echo " ⚠️ Warning: Generated or target pom.xml not found, skipping dependency update"
164+ return
165+ fi
166+
167+ echo " Extracting and updating dependencies from generated pom.xml"
168+
169+ # Extract dependencies from generated pom.xml (excluding test dependencies)
170+ local temp_deps=$( mktemp)
171+ sed -n ' /<dependencies>/,/<\/dependencies>/p' " ${generated_pom} " | \
172+ grep -v ' <scope>test</scope>' | \
173+ sed -n ' /<dependency>/,/<\/dependency>/p' > " ${temp_deps} "
174+
175+ if [[ -s " ${temp_deps} " ]]; then
176+ # Create a backup of the current pom.xml
177+ cp " ${target_pom} " " ${target_pom} .bak"
178+
179+ # Remove existing dependencies section and add new ones
180+ if command -v awk & > /dev/null; then
181+ awk '
182+ /<dependencies>/ {
183+ print;
184+ while ((getline line < "' ${temp_deps} ' ") > 0) print line;
185+ close("' ${temp_deps} ' ");
186+ # Skip until end of dependencies
187+ while (getline && !/^[[:space:]]*<\/dependencies>/) continue;
188+ print;
189+ next;
190+ }
191+ { print }
192+ ' " ${target_pom} " > " ${target_pom} .tmp" && mv " ${target_pom} .tmp" " ${target_pom} "
193+ echo " ✅ Updated pom.xml dependencies"
194+ else
195+ echo " ⚠️ Warning: awk not available, could not update dependencies"
196+ fi
197+ else
198+ echo " ⚠️ Warning: No dependencies found in generated pom.xml"
199+ fi
200+
201+ rm -f " ${temp_deps} "
202+ }
203+
204+ # Function to update dependencies in build.gradle
205+ update_gradle_dependencies () {
206+ local generated_gradle=" ${TEMP_OUTPUT_DIR} /build.gradle"
207+ local target_gradle=" ${PROJECT_ROOT} /build.gradle"
208+
209+ if [[ ! -f " ${generated_gradle} " ]] || [[ ! -f " ${target_gradle} " ]]; then
210+ echo " ⚠️ Warning: Generated or target build.gradle not found, skipping dependency update"
211+ return
212+ fi
213+
214+ echo " Extracting and updating dependencies from generated build.gradle"
215+
216+ # Extract implementation dependencies from generated build.gradle
217+ local temp_deps=$( mktemp)
218+ sed -n ' /^dependencies {/,/^}/p' " ${generated_gradle} " | \
219+ grep -E ' ^\s*(implementation|api|compileOnly)\s+' | \
220+ grep -v ' testImplementation\|testCompileOnly' > " ${temp_deps} "
221+
222+ if [[ -s " ${temp_deps} " ]]; then
223+ # Create a backup of the current build.gradle
224+ cp " ${target_gradle} " " ${target_gradle} .bak"
225+
226+ # Update dependencies section
227+ if command -v awk & > /dev/null; then
228+ awk '
229+ /^dependencies {/ {
230+ print;
231+ # Add new dependencies
232+ while ((getline line < "' ${temp_deps} ' ") > 0) {
233+ if (line !~ /testImplementation/) print " " line;
234+ }
235+ close("' ${temp_deps} ' ");
236+ # Keep existing testImplementation lines
237+ while (getline && !/^}/) {
238+ if ($0 ~ /testImplementation/) print;
239+ }
240+ print "}";
241+ next;
242+ }
243+ { print }
244+ ' " ${target_gradle} " > " ${target_gradle} .tmp" && mv " ${target_gradle} .tmp" " ${target_gradle} "
245+ echo " ✅ Updated build.gradle dependencies"
246+ else
247+ echo " ⚠️ Warning: awk not available, could not update dependencies"
248+ fi
249+ else
250+ echo " ⚠️ Warning: No implementation dependencies found in generated build.gradle"
251+ fi
252+
253+ rm -f " ${temp_deps} "
254+ }
255+
256+ # Function to extract and update version properties
257+ update_version_properties () {
258+ local generated_pom=" ${TEMP_OUTPUT_DIR} /pom.xml"
259+ local target_pom=" ${PROJECT_ROOT} /pom.xml"
260+ local generated_gradle=" ${TEMP_OUTPUT_DIR} /build.gradle"
261+ local target_gradle=" ${PROJECT_ROOT} /build.gradle"
262+
263+ echo " Updating version properties from generated files"
264+
265+ # Update properties in pom.xml
266+ if [[ -f " ${generated_pom} " ]] && [[ -f " ${target_pom} " ]]; then
267+ local temp_props=$( mktemp)
268+ sed -n ' /<properties>/,/<\/properties>/p' " ${generated_pom} " | \
269+ grep -E ' ^\s*<[^>]*-version>' | \
270+ grep -v ' <maven.compiler\|<project.build' > " ${temp_props} "
271+
272+ if [[ -s " ${temp_props} " ]]; then
273+ # Update existing properties with new versions
274+ while IFS= read -r prop_line; do
275+ local prop_name=$( echo " ${prop_line} " | sed -n ' s/.*<\([^>]*\)>.*/\1/p' )
276+ local prop_value=$( echo " ${prop_line} " | sed -n ' s/.*<[^>]*>\([^<]*\)<.*/\1/p' )
277+
278+ if [[ -n " ${prop_name} " ]] && [[ -n " ${prop_value} " ]]; then
279+ if grep -q " <${prop_name} >" " ${target_pom} " ; then
280+ if [[ " $OSTYPE " == " darwin" * ]]; then
281+ sed -i ' ' " s|<${prop_name} >[^<]*</${prop_name} >|<${prop_name} >${prop_value} </${prop_name} >|g" " ${target_pom} "
282+ else
283+ sed -i " s|<${prop_name} >[^<]*</${prop_name} >|<${prop_name} >${prop_value} </${prop_name} >|g" " ${target_pom} "
284+ fi
285+ fi
286+ fi
287+ done < " ${temp_props} "
288+ echo " ✅ Updated version properties in pom.xml"
289+ fi
290+ rm -f " ${temp_props} "
291+ fi
292+
293+ # Update ext properties in build.gradle
294+ if [[ -f " ${generated_gradle} " ]] && [[ -f " ${target_gradle} " ]]; then
295+ local temp_ext=$( mktemp)
296+ sed -n ' /^ext {/,/^}/p' " ${generated_gradle} " | \
297+ grep -E ' ^\s*[a-zA-Z_][a-zA-Z0-9_]*\s*=' > " ${temp_ext} "
298+
299+ if [[ -s " ${temp_ext} " ]]; then
300+ while IFS= read -r ext_line; do
301+ local var_name=$( echo " ${ext_line} " | sed -n ' s/^\s*\([a-zA-Z_][a-zA-Z0-9_]*\)\s*=.*/\1/p' )
302+ local var_value=$( echo " ${ext_line} " | sed -n ' s/.*=\s*\(.*\)$/\1/p' )
303+
304+ if [[ -n " ${var_name} " ]] && [[ -n " ${var_value} " ]]; then
305+ if grep -q " ${var_name} =" " ${target_gradle} " ; then
306+ if [[ " $OSTYPE " == " darwin" * ]]; then
307+ sed -i ' ' " s|${var_name} = .*|${var_name} = ${var_value} |g" " ${target_gradle} "
308+ else
309+ sed -i " s|${var_name} = .*|${var_name} = ${var_value} |g" " ${target_gradle} "
310+ fi
311+ fi
312+ fi
313+ done < " ${temp_ext} "
314+ echo " ✅ Updated ext properties in build.gradle"
315+ fi
316+ rm -f " ${temp_ext} "
317+ fi
318+ }
319+
155320# Strip 'v' prefix from version if present
156321VERSION_WITHOUT_V=" ${OPENAPI_VERSION# v} "
157322echo " Updating version in pom.xml to ${VERSION_WITHOUT_V} "
@@ -180,10 +345,36 @@ else
180345 echo " ⚠️ Warning: pom.xml not found at ${POM_FILE} "
181346fi
182347
348+ # Update build.gradle version
349+ GRADLE_FILE=" ${PROJECT_ROOT} /build.gradle"
350+ if [[ -f " ${GRADLE_FILE} " ]]; then
351+ echo " Updating version in build.gradle to ${VERSION_WITHOUT_V} "
352+ if command -v sed & > /dev/null; then
353+ if [[ " $OSTYPE " == " darwin" * ]]; then
354+ sed -i ' ' " s|^version = .*|version = '${VERSION_WITHOUT_V} '|g" " ${GRADLE_FILE} "
355+ else
356+ sed -i " s|^version = .*|version = '${VERSION_WITHOUT_V} '|g" " ${GRADLE_FILE} "
357+ fi
358+ echo " ✅ Updated build.gradle version to ${VERSION_WITHOUT_V} "
359+ else
360+ echo " ⚠️ Warning: sed not available, could not update build.gradle version"
361+ fi
362+ else
363+ echo " ⚠️ Warning: build.gradle not found at ${GRADLE_FILE} "
364+ fi
365+
366+ # Update dependencies and version properties
367+ update_pom_dependencies
368+ update_gradle_dependencies
369+ update_version_properties
370+
183371echo " "
184372echo " ✅ Java SDK updated successfully!"
185373echo " 📁 Updated directories:"
186374echo " - ${API_DIR} "
187375echo " - ${SRC_DIR} "
188376echo " - ${DOCS_DIR} "
189- echo " 📝 Updated version in pom.xml to ${OPENAPI_VERSION} "
377+ echo " 📝 Updated version to ${VERSION_WITHOUT_V} "
378+ echo " 🔗 Updated dependencies and version properties in:"
379+ echo " - pom.xml"
380+ echo " - build.gradle"
0 commit comments