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'