From f4b2e460c77b79f99831cd048eb0004059c96370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 17 Feb 2019 20:28:32 +0100 Subject: [PATCH] mvn: fix and cleanup dynamic profiles logic --- plugins/mvn/mvn.plugin.zsh | 78 +++++++++++++------------------------- 1 file changed, 27 insertions(+), 51 deletions(-) diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index 71bba454c..01aef814d 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -68,64 +68,43 @@ alias mvntc='mvn tomcat:run' alias mvntc7='mvn tomcat7:run' alias mvn-updates='mvn versions:display-dependency-updates' -#realpath replacement for iOS - not always present -function _realpath { - if [[ -f "$1" ]] - then - # file *must* exist - if cd "$(echo "${1%/*}")" &>/dev/null - then - # file *may* not be local - # exception is ./file.ext - # try 'cd .; cd -;' *works!* - local tmppwd="$PWD" - cd - &>/dev/null - else - # file *must* be local - local tmppwd="$PWD" - fi - else - # file *cannot* exist - return 1 # failure + +function listMavenCompletions { + local file new_file + local -a profiles POM_FILES + + # Root POM + POM_FILES=(~/.m2/settings.xml) + + # POM in the current directory + if [[ -f pom.xml ]]; then + local file=pom.xml + POM_FILES+=("${file:A}") fi - # reassemble realpath - echo "$tmppwd"/"${1##*/}" - return 1 #success -} + # Look for POM files in parent directories + while [[ -n "$file" ]] && grep -q "" "$file"; do + # look for a new relativePath for parent pom.xml + new_file=$(grep -e ".*" "$file" | sed -e 's/.*\(.*\)<\/relativePath>.*/\1/') -function __pom_hierarchy { - local file=`_realpath "pom.xml"` - POM_HIERARCHY+=("~/.m2/settings.xml") - POM_HIERARCHY+=("$file") - while [ -n "$file" ] && grep -q "" $file; do - ##look for a new relativePath for parent pom.xml - local new_file=`grep -e ".*" $file | sed 's/.*//' | sed 's/<\/relativePath>.*//g'` - - ## is present but not defined. Asume ../pom.xml - if [ -z "$new_file" ]; then + # if is present but not defined, assume ../pom.xml + if [[ -z "$new_file" ]]; then new_file="../pom.xml" fi - ## if file exists continue else break - new_pom=`_realpath "${file%/*}/$new_file"` - if [ -n "$new_pom" ]; then - file=$new_pom - else + # if file doesn't exist break + file="${file:h}/${new_file}" + if ! [[ -e "$file" ]]; then break fi - POM_HIERARCHY+=("$file") + + POM_FILES+=("${file:A}") done -} -function listMavenCompletions { - POM_HIERARCHY=() - __pom_hierarchy - - profiles=() - #current pom profiles - for item in ${POM_HIERARCHY[*]}; do - profiles=($profiles `[ -e $item ] && cat $item | sed 's///' | sed '//d' | grep -e "" -A 1 | grep -e ".*" | sed 's?.*\(.*\)<\/id>.*?-P\1?'`) + # Get profiles from found files + for file in $POM_FILES; do + [[ -e $file ]] || continue + profiles+=($(sed 's///' "$file" | sed '//d' | grep -e "" -A 1 | grep -e ".*" | sed 's?.*\(.*\)<\/id>.*?-P\1?')) done reply=( @@ -339,9 +318,6 @@ function listMavenCompletions { $profiles ) - - unset POM_HIERARCHY - unset profiles } compctl -K listMavenCompletions mvn mvnw