xref: /aosp_15_r20/external/google-cloud-java/generation/generate_gapic_bom.sh (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1*55e87721SMatt Gilbride#!/bin/bash
2*55e87721SMatt Gilbride
3*55e87721SMatt Gilbrideset -e
4*55e87721SMatt Gilbride
5*55e87721SMatt Gilbride# Generate BOM of the artifacts in this repository
6*55e87721SMatt Gilbride
7*55e87721SMatt Gilbridebom_lines=""
8*55e87721SMatt Gilbride# For modules that produce BOMs
9*55e87721SMatt Gilbridefor bom_directory in $(find . -maxdepth 3 -name 'google-*-bom' | sort --dictionary-order); do
10*55e87721SMatt Gilbride  if [[ "${bom_directory}" = *gapic-libraries-bom ]] ||  [[ "${bom_directory}" = *google-cloud-core* ]]; then
11*55e87721SMatt Gilbride    continue
12*55e87721SMatt Gilbride  fi
13*55e87721SMatt Gilbride  repo_metadata="${bom_directory}/../.repo-metadata.json"
14*55e87721SMatt Gilbride
15*55e87721SMatt Gilbride  pom_file="${bom_directory}/pom.xml"
16*55e87721SMatt Gilbride  groupId_line=$(grep --max-count=1 'groupId' "${pom_file}")
17*55e87721SMatt Gilbride  artifactId_line=$(grep --max-count=1 'artifactId' "${pom_file}")
18*55e87721SMatt Gilbride  version_line=$(grep --max-count=1 'x-version-update' "${pom_file}")
19*55e87721SMatt Gilbride
20*55e87721SMatt Gilbride  if [[ "$groupId_line" == *"com.google.maps"* ]]; then
21*55e87721SMatt Gilbride    # The gapic bom includes cloud libraries
22*55e87721SMatt Gilbride    continue
23*55e87721SMatt Gilbride  fi
24*55e87721SMatt Gilbride
25*55e87721SMatt Gilbride  bom_lines+="      <dependency>\n\
26*55e87721SMatt Gilbride      ${groupId_line}\n\
27*55e87721SMatt Gilbride      ${artifactId_line}\n\
28*55e87721SMatt Gilbride      ${version_line}\n\
29*55e87721SMatt Gilbride        <type>pom</type>\n\
30*55e87721SMatt Gilbride        <scope>import</scope>\n\
31*55e87721SMatt Gilbride      </dependency>\n"
32*55e87721SMatt Gilbridedone
33*55e87721SMatt Gilbride
34*55e87721SMatt Gilbride# For originally-handwritten modules that do not produce a BOM
35*55e87721SMatt Gilbridefor module in $(find . -mindepth 2 -maxdepth 2 -name pom.xml |sort --dictionary-order | xargs dirname); do
36*55e87721SMatt Gilbride  if ls ${module}/*-bom 1> /dev/null 2>&1; then
37*55e87721SMatt Gilbride    continue
38*55e87721SMatt Gilbride  fi
39*55e87721SMatt Gilbride  if ! test -f "${module}/.repo-metadata.json"; then
40*55e87721SMatt Gilbride    continue
41*55e87721SMatt Gilbride  fi
42*55e87721SMatt Gilbride
43*55e87721SMatt Gilbride  pom_file="${module}/pom.xml"
44*55e87721SMatt Gilbride  groupId_line=$(grep --max-count=1 'groupId' "${pom_file}")
45*55e87721SMatt Gilbride  artifactId_line=$(grep --max-count=1 'artifactId' "${pom_file}")
46*55e87721SMatt Gilbride  version_line=$(grep --max-count=1 'x-version-update' "${pom_file}")
47*55e87721SMatt Gilbride  bom_lines+="      <dependency>\n\
48*55e87721SMatt Gilbride      ${groupId_line}\n\
49*55e87721SMatt Gilbride      ${artifactId_line}\n\
50*55e87721SMatt Gilbride      ${version_line}\n\
51*55e87721SMatt Gilbride      </dependency>\n"
52*55e87721SMatt Gilbridedone
53*55e87721SMatt Gilbride
54*55e87721SMatt Gilbridemkdir -p gapic-libraries-bom
55*55e87721SMatt Gilbride
56*55e87721SMatt GilbrideGENERATION_DIR=$(dirname -- "$0");
57*55e87721SMatt Gilbrideperl -0pe 's/<dependencies>.*<\/dependencies>/<dependencies>\nBOM_ARTIFACT_LIST\n    <\/dependencies>/s' ${GENERATION_DIR}/../gapic-libraries-bom/pom.xml > ${GENERATION_DIR}/bom.pom.xml
58*55e87721SMatt Gilbrideawk -v "dependencyManagements=$bom_lines" '{gsub(/BOM_ARTIFACT_LIST/,dependencyManagements)}1' \
59*55e87721SMatt Gilbride    "${GENERATION_DIR}/bom.pom.xml" > gapic-libraries-bom/pom.xml
60*55e87721SMatt Gilbriderm ${GENERATION_DIR}/bom.pom.xml