xref: /aosp_15_r20/external/google-cloud-java/generation/set_parent_pom.sh (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
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