Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: bb97e918021259ebf45b0aa5b40255ce9558248c (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11



                                       
                                                                                

                                



                                                 

                                                    


                                                       

                    



                                    
                                        




                                  















                                                                                                                                                                                                


















































































                                                                                                                                                     


                                                                              

























                                                                                       

































                                                                                            




                                                                                                                                           

                                                                                                                
                                                                                                     
                      
                                                                                                       
                      
                                                                                                       

                      


                                                  







































                                                                  
#/bin/bash
set -e

# A space delimited list of feature IDs
features_whose_bundles_we_will_deploy="org.eclipse.ecf.remoteservice.sdk.feature
org.eclipse.ecf.core.feature
org.eclipse.ecf.core.ssl.feature
org.eclipse.ecf.filetransfer.feature
org.eclipse.ecf.filetransfer.ssl.feature
org.eclipse.ecf.filetransfer.httpclient45.feature
org.eclipse.ecf.filetransfer.httpclient4.feature
org.eclipse.ecf.filetransfer.httpclient4.ssl.feature
org.eclipse.ecf.remoteservice.examples.feature"

# Exclude orbit bundles, they should be done separately
orbit_bundles="javax.servlet
com.sun.jna
com.sun.jna.platform
org.apache.commons.codec
org.apache.commons.logging
org.apache.hadoop.zookeeper
org.apache.httpcomponents.httpclient
org.apache.httpcomponents.httpclient.win
org.apache.httpcomponents.httpcore
org.apache.log4j
org.json
org.objectweb.asm"

wget 'https://downloads.sourceforge.net/project/xmltask/xmltask/1.16.1/xmltask.jar?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fxmltask%2Ffiles%2Fxmltask%2F1.16.1%2Fxmltask.jar' -O xmltask.jar
cat << EOF > xpath.xml
<project xmlns:if="ant:if" xmlns:unless="ant:unless" name="xpath" default="xpath">
        <target name="init">
                <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" classpath="xmltask.jar"/>
        </target>
        <target name="xpath" depends="init">
                <xmltask source="\${xml.file}">
                        <copy path="\${xml.path}" property="results" append="true"/>
                </xmltask>
                <echo if:set="results" message="\${results}" file="results" append="false"/>
                <echo unless:set="results" message="" file="results" append="false"/>
        </target>
</project>
EOF

function deploy() {
	local target=$1
	mkdir -p $target
	sed -e 's/-SNAPSHOT//' $(dirname $target)/pom.xml > $target/pom.xml
	local pom=$target/pom.xml
	local file="$(ls $target/*-SNAPSHOT.jar 2>/dev/null)"
	local sources="${file%.jar}-sources.jar"
	local javadoc="${file%.jar}-javadoc.jar"

	# Create dummy javadoc jar
	if [ -f "$file" -a ! -f "$javadoc" ] ; then
		echo "Javadoc for ECF is distributed separately, please see: http://download.eclipse.org/rt/ecf/latest/javadoc/" > $target/README.txt
		(cd $target && jar -cf $(basename $javadoc) README.txt)
	fi

	# Build properties list
	local props="-DpomFile=$pom"
	if [ -n "$file" ] ; then
		props="$props -Dfile=$file"
	else
		props="$props -Dfile=$pom"
	fi
	if [ -f "$sources" ] ; then
		props="$props -Dsources=$sources"
	fi
	if [ -f "$javadoc" ] ; then
		props="$props -Djavadoc=$javadoc"
	fi

	#local settings=/opt/public/hipp/homes/genie.ecf/.m2/settings-deploy-ossrh.xml
	local settings=~/.m2/settings.xml
	echo "mvn -s $settings gpg:sign-and-deploy-file -DrepositoryId=ossrh " \
	  "-Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/" \
	  "$props -Dtycho.mode=maven"
	mvn -s $settings gpg:sign-and-deploy-file -DrepositoryId=ossrh \
	  -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \
	  $props -Dtycho.mode=maven
}

bundles=""
function _add_bundle_to_list() {
	local plugin=$1
	local match=0
	for b in $bundles; do
		if [ "$b" = "$plugin" ] ; then
			match=1
		fi
	done
	if [ "$match" != "1" ] ; then
		echo "    $plugin"
		local orbit_match=0
		for o_b in $orbit_bundles ; do
			if [ "$o_b" = "$plugin" ] ; then
				orbit_match=1
				break
			fi
		done
		if [ "$orbit_match" != "1" ] ; then
			bundles="$bundles $plugin"
		fi
	fi
	return $match
}

features=""
function _add_feature_to_list() {
	local feature=$1
	local match=0
	for f in $features ; do
		if [ "$f" = "$feature" ] ; then
			match=1
		fi
	done
	if [ "$match" != "1" ] ; then
		echo "  $feature"
		features="$features $feature"
	fi
	return $match
}

function xpath_call() {
	local xmlfile=$1
	local xmlquery=$2
	ant -f xpath.xml -Dxml.file=$xmlfile -Dxml.path="$xmlquery" >/dev/null
	cat results
	rm -f results
}

function parse_feature() {
	local xml=$(find -path "*/$1/feature.xml")

	# Process included plugins
	local i=0
	while true ; do
		i=$(( $i + 1 ))
		local plugin=$(xpath_call $xml "string(//plugin[$i]/@id)")
		if [ -z "$plugin" ] ; then
			break
		else
			_add_bundle_to_list $plugin || :
		fi
	done

	# Process plugins specified as "requires"
	local i=0
	while true ; do
		i=$(( $i + 1 ))
		local entry=$(xpath_call $xml "//requires/import[$i]")
		if [ -z "$entry" ] ; then
			break
		fi
		local plugin=$(xpath_call $xml "string(//requires/import[$i]/@plugin)")
		if [ -n "$plugin" ] ; then
			_add_bundle_to_list $plugin || :
		fi
	done

	# Process included features
	local i=0
	while true ; do
		i=$(( $i + 1 ))
		local subfeature=$(xpath_call $xml "string(//includes[$i]/@id)")
		if [ -z "$subfeature" ] ; then
			break
		else
			_add_feature_to_list $subfeature && parse_feature $subfeature
		fi
	done

	# Process features specified as "requires"
	local i=0
	while true ; do
		i=$(( $i + 1 ))
		local entry=$(xpath_call $xml "//requires/import[$i]")
		if [ -z "$entry" ] ; then
			break
		fi
		local subfeature=$(xpath_call $xml "string(//requires/import[$i]/@feature)")
		if [ -n "$subfeature" ] ; then
			_add_feature_to_list $subfeature && parse_feature $subfeature
		fi
	done
}

bundles_deploy=""
function check_maven_central() {
	local central_metadata="$(curl https://repo1.maven.org/maven2/org/eclipse/ecf/$1/maven-metadata.xml 2>/dev/null | grep '<latest>')"
	local central_version=0.0.0
	if [ -n "$central_metadata" ] ; then
		local central_version=$(echo $central_metadata | sed -e 's/.*>\(.*\)<.*/\1/')
	fi
	local jar_version=$(find -name "$1-*-SNAPSHOT.jar" | tail -n1 | sed -e "s/.*$1-\(.*\)-SNAPSHOT.jar/\1/")
	local op="="
	if [ $(echo $jar_version | cut -f1 -d.) -gt "$(echo $central_version | cut -f1 -d.)" ] ; then
		op=">"
	elif [ $(echo $jar_version | cut -f2 -d.) -gt "$(echo $central_version | cut -f2 -d.)" ] ; then
		op=">"
	elif [ $(echo $jar_version | cut -f3 -d.) -gt "$(echo $central_version | cut -f3 -d.)" ] ; then
		op=">"
	fi
	if [ "$central_version" = "0.0.0" ] ; then
		central_version="N/A"
	fi
	echo "  $1 $jar_version $op $central_version"
	if [ "$op" != "=" ] ; then
		bundles_deploy="$bundles_deploy $1"
	fi
}

echo
echo "Parsing the following features:"
echo "==============================="
for feature in $features_whose_bundles_we_will_deploy ; do
	_add_feature_to_list $feature && parse_feature $feature
done

echo
echo "Checking the following found bundles against maven central:"
echo "==========================================================="
bundles_sorted="$(for b in $bundles ; do echo $b ; done | sort)"
for bundle in $bundles_sorted ; do
	check_maven_central $bundle
done

echo
echo "Will deploy the following bundles with newer versions:"
echo "======================================================"
for bundle in $bundles_deploy ; do
	echo "  $bundle"
done

# Deploy parent pom
#deploy "./target"

# Deploy all discovered bundles
echo
for b in $bundles_deploy ; do
	jars=$(find -name "$b-*-SNAPSHOT.jar" | tail -n1)
	for jar in $jars ; do
		deploy "$(dirname $jar)"
	done
done

Back to the top