1*55e87721SMatt Gilbride#!/bin/bash 2*55e87721SMatt Gilbride 3*55e87721SMatt Gilbride# Using Google Mirror to avoid unnecessary load to https://repo1.maven.org/maven2 4*55e87721SMatt GilbrideMAVEN_SITE=https://maven-central.storage-download.googleapis.com/maven2 5*55e87721SMatt Gilbride 6*55e87721SMatt Gilbrideset -e 7*55e87721SMatt Gilbride 8*55e87721SMatt Gilbridefunction find_existing_version_pom() { 9*55e87721SMatt Gilbride local pom_file=$1 10*55e87721SMatt Gilbride if [ -z "${pom_file}" ]; then 11*55e87721SMatt Gilbride echo "Empty pom file name" 12*55e87721SMatt Gilbride exit 1 13*55e87721SMatt Gilbride fi 14*55e87721SMatt Gilbride local group_id=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="groupId"]/text()' \ 15*55e87721SMatt Gilbride "${pom_file}") 16*55e87721SMatt Gilbride local artifact_id=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="artifactId"]/text()' \ 17*55e87721SMatt Gilbride "${pom_file}") 18*55e87721SMatt Gilbride local version=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' \ 19*55e87721SMatt Gilbride "${pom_file}") 20*55e87721SMatt Gilbride echo -n "Checking ${group_id}:${artifact_id}:${version}:" 21*55e87721SMatt Gilbride if [ -z "${group_id}" ] || [ -z "${artifact_id}" ] || [ -z "${version}" ]; then 22*55e87721SMatt Gilbride echo "Couldn't parse the pom file: $pom_file" 23*55e87721SMatt Gilbride exit 1 24*55e87721SMatt Gilbride fi 25*55e87721SMatt Gilbride if [[ "${version}" == *SNAPSHOT* ]] && [ "${artifact_id}" != "google-cloud-java" ]; then 26*55e87721SMatt Gilbride echo " Release Please pull request contains SNAPSHOT version. Please investigate." 27*55e87721SMatt Gilbride return_code=1 28*55e87721SMatt Gilbride fi 29*55e87721SMatt Gilbride local group_id_dir="${group_id//\.//}" 30*55e87721SMatt Gilbride local URL="${MAVEN_SITE}/${group_id_dir}/${artifact_id}/${version}/${artifact_id}-${version}.pom" 31*55e87721SMatt Gilbride local status_code=$(curl --silent --head -o /dev/null -w "%{http_code}" $URL) 32*55e87721SMatt Gilbride if [ "${status_code}" == "404" ]; then 33*55e87721SMatt Gilbride echo " The version does not exists. Good" 34*55e87721SMatt Gilbride else 35*55e87721SMatt Gilbride echo " The version already exists at ${URL}. Please investigate." 36*55e87721SMatt Gilbride return_code=1 37*55e87721SMatt Gilbride fi 38*55e87721SMatt Gilbride 39*55e87721SMatt Gilbride} 40*55e87721SMatt Gilbride 41*55e87721SMatt Gilbridereturn_code=0 42*55e87721SMatt Gilbride 43*55e87721SMatt Gilbridefor pom_file in $(find . -maxdepth 3 -name pom.xml|sort --dictionary-order); do 44*55e87721SMatt Gilbride find_existing_version_pom "${pom_file}" 45*55e87721SMatt Gilbridedone 46*55e87721SMatt Gilbride 47*55e87721SMatt Gilbrideexit ${return_code} 48