xref: /aosp_15_r20/external/google-cloud-java/generation/consolidate_config.sh (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1*55e87721SMatt Gilbride#!/bin/bash
2*55e87721SMatt Gilbride
3*55e87721SMatt Gilbride# For each {module}/pom.xml
4*55e87721SMatt Gilbride# Removes dependencyManagement and pluginManagement that should be handled in the parent
5*55e87721SMatt Gilbride# Also removes other configuration that is handled in google-cloud-pom-parent and google-cloud-jar-parent
6*55e87721SMatt Gilbride
7*55e87721SMatt Gilbrideset -e
8*55e87721SMatt Gilbride
9*55e87721SMatt Gilbridefunction runRegexOnPoms {
10*55e87721SMatt Gilbride  perl_command=$1
11*55e87721SMatt Gilbride  search=$2
12*55e87721SMatt Gilbride  for pomFile in $(find . -mindepth 2 -maxdepth 3 -name pom.xml |sort --dictionary-order); do
13*55e87721SMatt Gilbride    if [[ $pomFile =~ .*google-cloud-jar-parent.* ]] || \
14*55e87721SMatt Gilbride       [[ $pomFile =~ .*google-cloud-pom-parent.* ]] || \
15*55e87721SMatt Gilbride       [[ $pomFile =~ .*java-shared-dependencies.* ]]; then
16*55e87721SMatt Gilbride      continue
17*55e87721SMatt Gilbride    fi
18*55e87721SMatt Gilbride
19*55e87721SMatt Gilbride    if grep -q "${search}" "$pomFile" && [[ $(wc -c < "$pomFile") !=  $(perl -0pe "$perl_command" "$pomFile" | wc -c) ]]; then
20*55e87721SMatt Gilbride      # execute the replacement in pom.xml
21*55e87721SMatt Gilbride      echo "Applying $perl_command for $pomFile"
22*55e87721SMatt Gilbride      perl -i -0pe "$perl_command" "$pomFile"
23*55e87721SMatt Gilbride    fi
24*55e87721SMatt Gilbride
25*55e87721SMatt Gilbride  done
26*55e87721SMatt Gilbride}
27*55e87721SMatt Gilbride
28*55e87721SMatt Gilbridefunction removeArtifact {
29*55e87721SMatt Gilbride  type=$1
30*55e87721SMatt Gilbride  name=$2
31*55e87721SMatt Gilbride  parent=$3
32*55e87721SMatt Gilbride  perl_command="s/(<${parent}>.*?)\s*<${type}>\s*?<groupId>[a-z\-\.]*<\/groupId>\s*?<artifactId>${name//-/\-}<\/artifactId>.*?<\/${type}>(.*?<\/${parent}>)/\$1\$2/s"
33*55e87721SMatt Gilbride  runRegexOnPoms "$perl_command" "$name"
34*55e87721SMatt Gilbride}
35*55e87721SMatt Gilbride
36*55e87721SMatt Gilbridefunction removeArtifactVersion {
37*55e87721SMatt Gilbride  type=$1
38*55e87721SMatt Gilbride  name=$2
39*55e87721SMatt Gilbride  perl_command="s/(\s*<${type}>\s*?<groupId>[a-z\-\.]*<\/groupId>\s*?<artifactId>${name//-/\-}<\/artifactId>\s*?(<scope>.*?<\/scope>)?)\s*?<version>[^\\n]*?<\/version>(.*?<\/${type}>)/\$1\$3/s"
40*55e87721SMatt Gilbride  runRegexOnPoms "$perl_command" "$name"
41*55e87721SMatt Gilbride}
42*55e87721SMatt Gilbride
43*55e87721SMatt Gilbridefunction annotateArtifactVersion {
44*55e87721SMatt Gilbride  type=$1
45*55e87721SMatt Gilbride  name=$2
46*55e87721SMatt Gilbride  perl_command="s/(\s*<${type}>\s*?<groupId>[a-z\-\.]*<\/groupId>\s*?<artifactId>${name//-/\-}<\/artifactId>\s*?(<scope>.*?<\/scope>)?\s*?)(<version>[^\\n]*?<\/version>)([^:\\n]*\\n.*?<\/${type}>)/\$1\$3<!-- {x-version-update:${name//-/\-}:current} -->\$4/s"
47*55e87721SMatt Gilbride  runRegexOnPoms "$perl_command" "$name"
48*55e87721SMatt Gilbride}
49*55e87721SMatt Gilbride
50*55e87721SMatt Gilbridefunction removeManagedDependency {
51*55e87721SMatt Gilbride  dependency=$1
52*55e87721SMatt Gilbride  removeArtifact 'dependency' "${dependency}" "dependencyManagement"
53*55e87721SMatt Gilbride}
54*55e87721SMatt Gilbride
55*55e87721SMatt Gilbridefunction removeElement {
56*55e87721SMatt Gilbride  element=$1
57*55e87721SMatt Gilbride  perl_command="s/\s*<${element}>.*?<\/${element}>//s"
58*55e87721SMatt Gilbride  runRegexOnPoms "$perl_command" "<${element}>"
59*55e87721SMatt Gilbride}
60*55e87721SMatt Gilbride
61*55e87721SMatt Gilbridefunction setGrafeasCheckstyleHeaderConfig {
62*55e87721SMatt Gilbride  perl_command="s/(\s*<properties>\s*.*?)(\s*<checkstyle.header.file>grafeas.header<\/checkstyle.header.file>)?(\s*<\/properties>)/\$1\n    <checkstyle.header.file>grafeas.header<\/checkstyle.header.file>\$3/s"
63*55e87721SMatt Gilbride  runRegexOnPoms "$perl_command" ">Grafeas Client<"
64*55e87721SMatt Gilbride}
65*55e87721SMatt Gilbride
66*55e87721SMatt GilbridesetGrafeasCheckstyleHeaderConfig
67*55e87721SMatt GilbrideremoveManagedDependency 'google-cloud-shared-dependencies'
68*55e87721SMatt GilbrideremoveManagedDependency 'junit'
69*55e87721SMatt GilbrideremoveManagedDependency 'joda-time'
70*55e87721SMatt GilbrideremoveManagedDependency 'truth'
71*55e87721SMatt GilbrideremoveManagedDependency 'easymock'
72*55e87721SMatt GilbrideremoveManagedDependency 'perfmark-api'
73*55e87721SMatt GilbrideremoveManagedDependency 'google-cloud-pubsub'
74*55e87721SMatt GilbrideremoveManagedDependency 'proto-google-cloud-pubsub-v1'
75*55e87721SMatt GilbrideremoveManagedDependency 'google-cloud-pubsub-bom'
76*55e87721SMatt GilbrideremoveManagedDependency 'google-api-services-translate'
77*55e87721SMatt GilbrideremoveElement 'reporting'
78*55e87721SMatt GilbrideremoveElement 'developers'
79*55e87721SMatt GilbrideremoveElement 'organization'
80*55e87721SMatt GilbrideremoveElement 'scm'
81*55e87721SMatt GilbrideremoveElement 'issueManagement'
82*55e87721SMatt GilbrideremoveElement 'licenses'
83*55e87721SMatt GilbrideremoveElement 'profiles'
84*55e87721SMatt GilbrideremoveElement 'junit.version'
85*55e87721SMatt GilbrideremoveElement 'build'
86*55e87721SMatt GilbrideremoveElement 'url'
87*55e87721SMatt GilbrideremoveArtifact 'plugin' 'nexus-staging-maven-plugin' 'plugins'
88*55e87721SMatt GilbrideremoveArtifact 'dependency' 'checkstyle' 'plugins'
89*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'junit'
90*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'easymock'
91*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'truth'
92*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'grpc-google-common-protos'
93*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'google-api-services-dns'
94*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'google-api-services-translate'
95*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'google-api-services-cloudresourcemanager'
96*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'google-api-services-storage'
97*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'google-cloud-storage'
98*55e87721SMatt GilbrideremoveArtifactVersion 'plugin' 'maven-checkstyle-plugin'
99*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'mockito-all'
100*55e87721SMatt GilbrideremoveArtifactVersion 'dependency' 'objenesis'
101*55e87721SMatt GilbrideannotateArtifactVersion 'dependency' 'grafeas'
102*55e87721SMatt GilbrideannotateArtifactVersion 'dependency' 'proto-google-cloud-orgpolicy-v1'
103*55e87721SMatt GilbrideannotateArtifactVersion 'dependency' 'proto-google-identity-accesscontextmanager-v1'
104*55e87721SMatt GilbrideannotateArtifactVersion 'dependency' 'proto-google-cloud-os-config-v1'
105*55e87721SMatt GilbrideannotateArtifactVersion 'dependency' 'google-cloud-resourcemanager'