summaryrefslogtreecommitdiff
path: root/plugins/mvn
diff options
context:
space:
mode:
authorMarc Cornellà <marc.cornella@live.com>2019-02-17 20:28:32 +0100
committerMarc Cornellà <marc.cornella@live.com>2019-02-17 20:57:56 +0100
commitf4b2e460c77b79f99831cd048eb0004059c96370 (patch)
tree110d8a4246aaeac04e3e4e7ac659bad8f871ecce /plugins/mvn
parentfff756069f678ceda0b7c760b843c09bbc2bc72d (diff)
downloadzsh-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.zsh78
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