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