1*55e87721SMatt Gilbride#!/bin/bash 2*55e87721SMatt Gilbride 3*55e87721SMatt Gilbrideset -ef 4*55e87721SMatt Gilbride 5*55e87721SMatt Gilbride# For each library module in current working directory, this script 6*55e87721SMatt Gilbride# sets the parent to the root pom.xml 7*55e87721SMatt Gilbride 8*55e87721SMatt Gilbride# Run this script at the root of google-cloud-java repository 9*55e87721SMatt Gilbride 10*55e87721SMatt Gilbridefunction replaceParent { 11*55e87721SMatt Gilbride parent_pom=$1 12*55e87721SMatt Gilbride # First, read the values from the parent pom.xml 13*55e87721SMatt Gilbride parent_version=$(perl -nle 'print $1 if m|<version>(.+)</version>|' "$parent_pom"|head -1) 14*55e87721SMatt Gilbride parent_group_id=$(perl -nle 'print $1 if m|<groupId>(.+)</groupId>|' "$parent_pom" |head -1) 15*55e87721SMatt Gilbride parent_artifact_id=$(perl -nle 'print $1 if m|<artifactId>(.+)</artifactId>|' "$parent_pom"|head -1) 16*55e87721SMatt Gilbride relativePath=$(echo "$parent_pom" | sed 's/\//\\\//g') 17*55e87721SMatt Gilbride 18*55e87721SMatt Gilbride # Search for <parent> tag in module pom and replace the next three lines -- groupId, artifcatId, and version 19*55e87721SMatt Gilbride perl_command="s/\s*<parent>.*?<\/parent>/\n\n <parent>\n <groupId>${parent_group_id}<\/groupId>\n <artifactId>${parent_artifact_id}<\/artifactId>\n <version>${parent_version}<\/version><!-- {x-version-update:google-cloud-java:current} -->\n <relativePath>${relativePath}<\/relativePath>\n <\/parent>/s" 20*55e87721SMatt Gilbride # execute the replacement in pom.xml 21*55e87721SMatt Gilbride perl -i -0pe "$perl_command" pom.xml 22*55e87721SMatt Gilbride} 23*55e87721SMatt Gilbride 24*55e87721SMatt Gilbride# Then, apply the values as the parent pom of each module 25*55e87721SMatt Gilbridefor module in $(find . -mindepth 2 -maxdepth 2 -name pom.xml | sort --dictionary-order | xargs dirname); do 26*55e87721SMatt Gilbride # example value of module is "./java-accessapproval" 27*55e87721SMatt Gilbride if [[ "${module}" = *gapic-libraries-bom ]] || \ 28*55e87721SMatt Gilbride [[ "${module}" = *google-cloud-jar-parent ]] || \ 29*55e87721SMatt Gilbride [[ "${module}" = *google-cloud-pom-parent ]] || \ 30*55e87721SMatt Gilbride [[ "${module}" = *java-shared-dependencies ]]; then 31*55e87721SMatt Gilbride continue 32*55e87721SMatt Gilbride fi 33*55e87721SMatt Gilbride echo "Processing module $module" 34*55e87721SMatt Gilbride pushd $module 35*55e87721SMatt Gilbride 36*55e87721SMatt Gilbride replaceParent ../google-cloud-jar-parent/pom.xml 37*55e87721SMatt Gilbride 38*55e87721SMatt Gilbride # update the bom projects as well by removing parent 39*55e87721SMatt Gilbride if ls -1 | grep 'bom'; then 40*55e87721SMatt Gilbride BOM=$(ls -1 | grep 'bom') 41*55e87721SMatt Gilbride cd "$BOM" 42*55e87721SMatt Gilbride replaceParent ../../google-cloud-pom-parent/pom.xml 43*55e87721SMatt Gilbride fi 44*55e87721SMatt Gilbride 45*55e87721SMatt Gilbride popd 46*55e87721SMatt Gilbridedone 47