diff options
author | Marc Cornellà <marc.cornella@live.com> | 2019-02-17 20:28:32 +0100 |
---|---|---|
committer | Marc Cornellà <marc.cornella@live.com> | 2019-02-17 20:57:56 +0100 |
commit | f4b2e460c77b79f99831cd048eb0004059c96370 (patch) | |
tree | 110d8a4246aaeac04e3e4e7ac659bad8f871ecce /plugins/mvn | |
parent | fff756069f678ceda0b7c760b843c09bbc2bc72d (diff) | |
download | zsh-f4b2e460c77b79f99831cd048eb0004059c96370.tar.gz zsh-f4b2e460c77b79f99831cd048eb0004059c96370.tar.bz2 zsh-f4b2e460c77b79f99831cd048eb0004059c96370.zip |
mvn: fix and cleanup dynamic profiles logic
Diffstat (limited to 'plugins/mvn')
-rw-r--r-- | plugins/mvn/mvn.plugin.zsh | 78 |
1 files 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 - fi - # reassemble realpath - echo "$tmppwd"/"${1##*/}" - return 1 #success -} +function listMavenCompletions { + local file new_file + local -a profiles POM_FILES + + # Root POM + POM_FILES=(~/.m2/settings.xml) -function __pom_hierarchy { - local file=`_realpath "pom.xml"` - POM_HIERARCHY+=("~/.m2/settings.xml") - POM_HIERARCHY+=("$file") - while [ -n "$file" ] && grep -q "<parent>" $file; do - ##look for a new relativePath for parent pom.xml - local new_file=`grep -e "<relativePath>.*</relativePath>" $file | sed 's/.*<relativePath>//' | sed 's/<\/relativePath>.*//g'` + # POM in the current directory + if [[ -f pom.xml ]]; then + local file=pom.xml + POM_FILES+=("${file:A}") + fi - ## <parent> is present but not defined. Asume ../pom.xml - if [ -z "$new_file" ]; then + # Look for POM files in parent directories + while [[ -n "$file" ]] && grep -q "<parent>" "$file"; do + # look for a new relativePath for parent pom.xml + new_file=$(grep -e "<relativePath>.*</relativePath>" "$file" | sed -e 's/.*<relativePath>\(.*\)<\/relativePath>.*/\1/') + + # if <parent> 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") - done -} -function listMavenCompletions { - POM_HIERARCHY=() - __pom_hierarchy + POM_FILES+=("${file:A}") + done - profiles=() - #current pom profiles - for item in ${POM_HIERARCHY[*]}; do - profiles=($profiles `[ -e $item ] && cat $item | sed 's/<!--.*-->//' | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/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 "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?')) done reply=( @@ -339,9 +318,6 @@ function listMavenCompletions { $profiles ) - - unset POM_HIERARCHY - unset profiles } compctl -K listMavenCompletions mvn mvnw |