From d04e4407a6a5888b8f6d924e0c9706378c3d285a Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Fri, 28 Jul 2017 12:26:54 -0700 Subject: Add integration scripts from OPEN-O Change-Id: Ife6951ed9ea8c5b9dcea68e7a095b6bd5180e7d1 Signed-off-by: Gary Wu --- autorelease/scripts/fix-relativepaths.sh | 62 ++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 autorelease/scripts/fix-relativepaths.sh (limited to 'autorelease/scripts/fix-relativepaths.sh') 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: :: + +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 ^" -- cgit 1.2.3-korg