f4b2e460c77b79f99831cd048eb0004059c96370

Author
Marc Cornellà <marc.cornella@live.com>
Committer
Marc Cornellà <marc.cornella@live.com>
Date

Message

mvn: fix and cleanup dynamic profiles logic

Diff

This diff is truncated to protect this page.

  1diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh
  2index 71bba454c98a919ca27731cdc62f0614e121bbc6..01aef814d59702199f30a724eb486907719d6662 100644
  3--- a/plugins/mvn/mvn.plugin.zsh
  4+++ b/plugins/mvn/mvn.plugin.zsh
  5@@ -68,64 +68,43 @@ alias mvntc='mvn tomcat:run'
  6 alias mvntc7='mvn tomcat7:run'
  7 alias mvn-updates='mvn versions:display-dependency-updates'
  8 
  9-#realpath replacement for iOS - not always present
 10-function _realpath {
 11-	if [[ -f "$1" ]]
 12-	then
 13-		# file *must* exist
 14-		if cd "$(echo "${1%/*}")" &>/dev/null
 15-		then
 16-			# file *may* not be local
 17-			# exception is ./file.ext
 18-			# try 'cd .; cd -;' *works!*
 19-			local tmppwd="$PWD"
 20-			cd - &>/dev/null
 21-		else
 22-			# file *must* be local
 23-			local tmppwd="$PWD"
 24-		fi
 25-	else
 26-		# file *cannot* exist
 27-		return 1 # failure
 28-	fi
 29 
 30-	# reassemble realpath
 31-	echo "$tmppwd"/"${1##*/}"
 32-	return 1 #success
 33-}
 34+function listMavenCompletions {
 35+	local file new_file
 36+	local -a profiles POM_FILES
 37+
 38+	# Root POM
 39+	POM_FILES=(~/.m2/settings.xml)
 40 
 41-function __pom_hierarchy {
 42-	local file=`_realpath "pom.xml"`
 43-	POM_HIERARCHY+=("~/.m2/settings.xml")
 44-	POM_HIERARCHY+=("$file")
 45-	while [ -n "$file" ] && grep -q "<parent>" $file; do
 46-		##look for a new relativePath for parent pom.xml
 47-		local new_file=`grep -e "<relativePath>.*</relativePath>" $file | sed 's/.*<relativePath>//' | sed 's/<\/relativePath>.*//g'`
 48+	# POM in the current directory
 49+	if [[ -f pom.xml ]]; then
 50+		local file=pom.xml
 51+		POM_FILES+=("${file:A}")
 52+	fi
 53 
 54-		## <parent> is present but not defined. Asume ../pom.xml
 55-		if [ -z "$new_file" ]; then
 56+	# Look for POM files in parent directories
 57+	while [[ -n "$file" ]] && grep -q "<parent>" "$file"; do
 58+		# look for a new relativePath for parent pom.xml
 59+		new_file=$(grep -e "<relativePath>.*</relativePath>" "$file" | sed -e 's/.*<relativePath>\(.*\)<\/relativePath>.*/\1/')
 60+
 61+		# if <parent> is present but not defined, assume ../pom.xml
 62+		if [[ -z "$new_file" ]]; then
 63 			new_file="../pom.xml"
 64 		fi
 65 
 66-		## if file exists continue else break
 67-		new_pom=`_realpath "${file%/*}/$new_file"`
 68-		if [ -n "$new_pom" ]; then
 69-			file=$new_pom
 70-		else
 71+		# if file doesn't exist break
 72+		file="${file:h}/${new_file}"
 73+		if ! [[ -e "$file" ]]; then
 74 			break
 75 		fi
 76-		POM_HIERARCHY+=("$file")
 77-	done
 78-}
 79 
 80-function listMavenCompletions {
 81-	POM_HIERARCHY=()
 82-	__pom_hierarchy
 83+		POM_FILES+=("${file:A}")
 84+	done
 85 
 86-	profiles=()
 87-	#current pom profiles
 88-	for item in ${POM_HIERARCHY[*]}; do
 89-		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?'`)
 90+	# Get profiles from found files
 91+	for file in $POM_FILES; do
 92+		[[ -e $file ]] || continue
 93+		profiles+=($(sed 's/<!--.*-->//' "$file" | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?'))
 94 	done
 95 
 96 	reply=(
 97@@ -339,9 +318,6 @@ function listMavenCompletions {
 98 
 99 		$profiles
100 	)
101-
102-	unset POM_HIERARCHY
103-	unset profiles
104 }