blob: 8b5c5d0aac58ff21d1b2afd7ffdb126cd7dedc1d [file] [edit]
#!/bin/bash
# For each {module}/pom.xml
# Removes dependencyManagement and pluginManagement that should be handled in the parent
# Also removes other configuration that is handled in google-cloud-pom-parent and google-cloud-jar-parent
set -e
function runRegexOnPoms {
perl_command=$1
search=$2
for pomFile in $(find . -mindepth 2 -maxdepth 3 -name pom.xml |sort --dictionary-order); do
if [[ $pomFile =~ .*google-cloud-jar-parent.* ]] || \
[[ $pomFile =~ .*google-cloud-pom-parent.* ]] || \
[[ $pomFile =~ .*java-shared-dependencies.* ]]; then
continue
fi
if grep -q "${search}" "$pomFile" && [[ $(wc -c < "$pomFile") != $(perl -0pe "$perl_command" "$pomFile" | wc -c) ]]; then
# execute the replacement in pom.xml
echo "Applying $perl_command for $pomFile"
perl -i -0pe "$perl_command" "$pomFile"
fi
done
}
function removeArtifact {
type=$1
name=$2
parent=$3
perl_command="s/(<${parent}>.*?)\s*<${type}>\s*?<groupId>[a-z\-\.]*<\/groupId>\s*?<artifactId>${name//-/\-}<\/artifactId>.*?<\/${type}>(.*?<\/${parent}>)/\$1\$2/s"
runRegexOnPoms "$perl_command" "$name"
}
function removeArtifactVersion {
type=$1
name=$2
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"
runRegexOnPoms "$perl_command" "$name"
}
function annotateArtifactVersion {
type=$1
name=$2
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"
runRegexOnPoms "$perl_command" "$name"
}
function removeManagedDependency {
dependency=$1
removeArtifact 'dependency' "${dependency}" "dependencyManagement"
}
function removeElement {
element=$1
perl_command="s/\s*<${element}>.*?<\/${element}>//s"
runRegexOnPoms "$perl_command" "<${element}>"
}
function setGrafeasCheckstyleHeaderConfig {
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"
runRegexOnPoms "$perl_command" ">Grafeas Client<"
}
setGrafeasCheckstyleHeaderConfig
removeManagedDependency 'google-cloud-shared-dependencies'
removeManagedDependency 'junit'
removeManagedDependency 'joda-time'
removeManagedDependency 'truth'
removeManagedDependency 'easymock'
removeManagedDependency 'perfmark-api'
removeManagedDependency 'google-cloud-pubsub'
removeManagedDependency 'proto-google-cloud-pubsub-v1'
removeManagedDependency 'google-cloud-pubsub-bom'
removeManagedDependency 'google-api-services-translate'
removeElement 'reporting'
removeElement 'developers'
removeElement 'organization'
removeElement 'scm'
removeElement 'issueManagement'
removeElement 'licenses'
removeElement 'profiles'
removeElement 'junit.version'
removeElement 'build'
removeElement 'url'
removeArtifact 'plugin' 'nexus-staging-maven-plugin' 'plugins'
removeArtifact 'dependency' 'checkstyle' 'plugins'
removeArtifactVersion 'dependency' 'junit'
removeArtifactVersion 'dependency' 'easymock'
removeArtifactVersion 'dependency' 'truth'
removeArtifactVersion 'dependency' 'grpc-google-common-protos'
removeArtifactVersion 'dependency' 'google-api-services-dns'
removeArtifactVersion 'dependency' 'google-api-services-translate'
removeArtifactVersion 'dependency' 'google-api-services-cloudresourcemanager'
removeArtifactVersion 'dependency' 'google-api-services-storage'
removeArtifactVersion 'dependency' 'google-cloud-storage'
removeArtifactVersion 'plugin' 'maven-checkstyle-plugin'
removeArtifactVersion 'dependency' 'mockito-all'
removeArtifactVersion 'dependency' 'objenesis'
annotateArtifactVersion 'dependency' 'grafeas'
annotateArtifactVersion 'dependency' 'proto-google-cloud-orgpolicy-v1'
annotateArtifactVersion 'dependency' 'proto-google-identity-accesscontextmanager-v1'
annotateArtifactVersion 'dependency' 'proto-google-cloud-os-config-v1'
annotateArtifactVersion 'dependency' 'google-cloud-resourcemanager'