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