diff options
Diffstat (limited to 'autorelease/scripts/fix-relativepaths.sh')
-rwxr-xr-x | autorelease/scripts/fix-relativepaths.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/autorelease/scripts/fix-relativepaths.sh b/autorelease/scripts/fix-relativepaths.sh new file mode 100755 index 000000000..1c9b8d331 --- /dev/null +++ b/autorelease/scripts/fix-relativepaths.sh @@ -0,0 +1,62 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2015, 2016 The Linux Foundation. All rights reserved. +############################################################################## + +# autorelease root dir +ROOT=`git rev-parse --show-toplevel`/autorelease + +BUILD_DIR=$ROOT/build + +mkdir -p $BUILD_DIR +cd $BUILD_DIR + +# MAP of path to a parent pom from the perspective of hosting directory +# starting from the autorelease repo root. +# +# Format: <groupId>:<artifactId>:<path> + +fix_relative_paths() { + PARENT_MAP=( + "org.openo.oparent:oparent:oparent" + "org.openo.nfvo:nfvo-root:nfvo" + ) + + pom=$1 + echo "Scanning $pom" + pomPath=`dirname $pom` + + # Find and replace parent poms + for parent in "${PARENT_MAP[@]}"; do + map=${parent#*:} # + + groupId=${parent%%:*} # Maven groupId + artifactId=${map%%:*} # Maven artifactId + projectPath=${map#*:} # Path to pom file from the perspective of hosting repo + + # Compute relative path to parent pom + relativePath=`python -c "import os.path; print os.path.relpath('$projectPath','$pomPath')"` + + # Standardize POM XML formatting + xmlstarlet fo "$pom" > "${pom}.old" + + # Update any existing relativePath values + xmlstarlet ed -P -N x=http://maven.apache.org/POM/4.0.0 \ + -u "//x:parent[x:artifactId=\"$artifactId\" and x:groupId=\"$groupId\"]/x:relativePath" \ + -v "$relativePath" "${pom}" > "${pom}.new1" + + # Add missing ones + xmlstarlet ed -P -N x=http://maven.apache.org/POM/4.0.0 \ + -s "//x:parent[x:artifactId=\"$artifactId\" and x:groupId=\"$groupId\" and count(x:relativePath)=0]" \ + -t elem -n relativePath -v "$relativePath" "${pom}.new1" > "${pom}.new2" + + # Standardize POM XML formatting again + xmlstarlet fo "${pom}.new2" > "${pom}.new" + + diff -u "${pom}.old" "${pom}.new" + cp "${pom}.new" "${pom}" + done +} + +# Find all project poms ignoring the /src/ paths (We don't want to scan code) +find . -name pom.xml -not -path "*/src/*" | sort | xargs -I^ bash -c "$(declare -f fix_relative_paths); fix_relative_paths ^" |