view build.xml @ 6:b8f70d8216b3 draft

planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit b3a4e34cf9356447ae3507cc6fe2ff6a1f24afbc-dirty
author prog
date Mon, 27 Mar 2017 06:27:29 -0400
parents
children
line wrap: on
line source

<project name="w4m.tool.lcmsmatching" default="all">

	<dirname property="this.dir" file="${ant.file.w4m.tool.lcmsmatching}"/>
	<property name="conda.dir" value="${user.home}/w4m-conda"/>
	<property name="planemo.dir" value="${user.home}/.planemo"/>

	<!--~~~~~~~~~~~~~~~~~
	~ PUBLIC PROPERTIES ~
	~~~~~~~~~~~~~~~~~~-->

	<!-- These properties can be set when calling Ant: `ant -DPROP=value ...`. -->

	<property name="TIMESTAMP" value="true"/>
	<property name="VERSION" value="true"/>
	<property name="DIST.TEST" value="true"/>
	<property name="TOOL.PREFIX" value="$__tool_directory__/"/>
	<property name="PKG.PREFIX" value="w4m-tool-lcmsmatching"/>

	<!--~~~~~~~~~~~~~~~~~~~
	~ INTERNAL PROPERTIES ~
	~~~~~~~~~~~~~~~~~~~~-->

	<!-- Version -->
	<property name="version" value="2.1.3"/>
	<condition property="version.suffix" value="" else="-${version}">
		<isfalse value="${VERSION}"/>
	</condition>

	<!-- Distribution directories -->
	<property name="dist.dir" value="dist"/>
	<property name="dist.code.dir" value="${dist.dir}/code"/>
	<property name="dist.test.dir" value="${dist.dir}/test"/>

	<!-- Tool XML paths -->
	<property name="tool.xml" value="lcmsmatching.xml"/>
	<property name="orig.tool.xml" value="${tool.xml}"/>
	<property name="dest.tool.xml" value="${dist.code.dir}/${tool.xml}"/>

	<!-- Time stamp -->
	<tstamp/>
	<property name="timestamp" value="${DSTAMP}-${TSTAMP}"/>
	<condition property="timestamp.suffix" value="" else="-${timestamp}">
		<isfalse value="${TIMESTAMP}"/>
	</condition>

	<!-- Package -->
	<property name="pkg.ext" value="tar.gz"/>
	<property name="pkg.name" value="${PKG.PREFIX}${version.suffix}${timestamp.suffix}"/>
	<property name="pkg.path" value="${dist.dir}/${pkg.name}.${pkg.ext}"/>

	<!--~~~
	~ ALL ~
	~~~~~-->

	<target name="all"/>

	<!--~~~~
	~ DIST ~
	~~~~~-->

	<target name="dist" depends="dist.code,dist.tar,dist.test"/>

	<!--~~~~~~~~
	~ DIST W4M ~
	~~~~~~~~~-->

	<target name="dist.w4m" depends="w4m.code,dist.tar,dist.test"/>

	<!--~~~~~~~~~
	~ DIST TEST ~
	~~~~~~~~~~-->

	<target name="dist.test" if="${DIST.TEST}">

		<!-- Make temp dir -->
		<delete dir="${dist.test.dir}"/>
		<mkdir dir="${dist.test.dir}"/>

		<!-- Extract package in temp dir -->
		<untar src="${pkg.path}" dest="${dist.test.dir}" compression="gzip"/>
		<chmod file="${dist.test.dir}/search-mz" perm="u+x"/> <!-- This file should be already executable, since it has been put executable inside the tar. It seems the untar task of Ant does not handle the file permissions. -->

		<!-- Run search-mz on sample input file -->
		<exec executable="${dist.test.dir}/search-mz" failonerror="true">
			<arg value="-d"/>
			<arg value="file"/>
			<arg value="--url"/>
			<arg value="test/filedb.tsv"/>
			<arg value="-m"/>
			<arg value="pos"/>
			<arg value="-i"/>
			<arg value="test/mzrt-input.tsv"/>
			<arg value="-o"/>
			<arg value="mzrt-output.tsv"/>
		</exec>

	</target>

	<!--~~~~~~~~
	~ W4M CODE ~
	~~~~~~~~~-->

	<target name="w4m.code" depends="dist.code">

		<!-- Copy and transform tool XML file. -->
		<copy file="${orig.tool.xml}" tofile="${dest.tool.xml}"/>

		<!-- Copy python script. -->
		<copy todir="${dist.code.dir}">
			<fileset dir="." includes="*.py"/>
		</copy>
	</target>

	<!--~~~~~~~~~
	~ DIST CODE ~
	~~~~~~~~~~-->

	<target name="dist.code">

		<!-- Clean directory -->
		<delete dir="${dist.code.dir}"/>
		<mkdir dir="${dist.code.dir}"/>

		<!-- Copy R code -->
		<copy todir="${dist.code.dir}">
			<fileset dir="." includes="search-mz,*.R"/>
		</copy>

	</target>

	<!--~~~~~~~~
	~ DIST TAR ~
	~~~~~~~~~-->

	<target name="dist.tar">

		<!-- Build tar file -->
		<tar destfile="${pkg.path}" compression="gzip">

			<!-- Include script with execution rights -->
			<tarfileset dir="${dist.code.dir}" filemode="755">
				<include name="search-mz"/>
			</tarfileset>

			<!-- Include remaining code and data files -->
			<tarfileset dir="${dist.code.dir}">
				<include name="**"/>
				<exclude name="search-mz"/>
			</tarfileset>
		</tar>
	</target>

	<!--~~~~~
	~ CLEAN ~
	~~~~~~-->

	<target name="clean">
		<delete dir="${dist.dir}"/>
		<delete dir="${conda.dir}"/>
		<delete dir="${planemo.dir}"/>
	</target>

	<!--~~~~~~~~~~~
	~ GALAXY TEST ~
	~~~~~~~~~~~~-->

	<target name="galaxy.test" depends="planemo.lint,planemo.test"/>

	<!--~~~~~~~~~~~~
	~ PLANEMO LINT ~
	~~~~~~~~~~~~~-->

	<target name="planemo.lint" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="lint"/>
			<arg value="--no_xsd"/>
			<arg value="${tool.xml}"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~
	~ PLANEMO TEST ~
	~~~~~~~~~~~~~-->

	<target name="planemo.test" depends="planemo.conda.install">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="test"/>
			<arg value="--conda_prefix"/>
			<arg value="${conda.dir}"/>
			<arg value="--galaxy_branch"/>
			<arg value="release_16.01"/>
			<arg value="--conda_dependency_resolution"/>
			<arg value="${tool.xml}"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO CONDA INSTALL ~
	~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.conda.install" depends="planemo.conda.init,planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="conda_install"/>
			<arg value="--conda_prefix"/>
			<arg value="${conda.dir}"/>
			<arg value="${tool.xml}"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~
	~ PLANEMO CONDA INIT ~
	~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.conda.init">
		<exec executable="planemo" failonerror="true">
			<arg value="conda_init"/>
			<arg value="--conda_prefix"/>
			<arg value="${conda.dir}"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~
	~ PLANEMO SHED LINT ~
	~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.shed.lint" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_lint"/>
			<arg value="--tools"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TEST TOOLSHED CREATE ~
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.testtoolshed.create" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_create"/>
			<arg value="--shed_target"/>
			<arg value="testtoolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TEST TOOLSHED DIFF ~
	~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.testtoolshed.diff" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_diff"/>
			<arg value="--shed_target"/>
			<arg value="testtoolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TEST TOOLSHED UPDATE ~
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.testtoolshed.update" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_update"/>
			<arg value="--check_diff"/>
			<arg value="--shed_target"/>
			<arg value="testtoolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TEST TOOLSHED TEST ~
	~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.testtoolshed.test" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_test"/>
			<arg value="--shed_target"/>
			<arg value="testtoolshed"/>
			<arg value="--install_galaxy"/>
			<arg value="--galaxy_branch"/>
			<arg value="release_16.01"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TOOLSHED CREATE ~
	~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.toolshed.create" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_create"/>
			<arg value="--shed_target"/>
			<arg value="toolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TOOLSHED DIFF ~
	~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.toolshed.diff" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_diff"/>
			<arg value="--shed_target"/>
			<arg value="toolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~~~~~~~~~~~~~
	~ PLANEMO TOOLSHED UPDATE ~
	~~~~~~~~~~~~~~~~~~~~~~~~-->

	<target name="planemo.toolshed.update" depends="planemo.env">
		<exec executable="planemo" dir="${dist.code.dir}" failonerror="true">
			<arg value="shed_update"/>
			<arg value="--check_diff"/>
			<arg value="--shed_target"/>
			<arg value="toolshed"/>
		</exec>
	</target>

	<!--~~~~~~~~~~~
	~ PLANEMO ENV ~
	~~~~~~~~~~~~-->

	<target name="planemo.env" depends="w4m.code">
		<chmod file="${dist.code.dir}/search-mz" perm="u+x"/>
		<ant dir="test" target="input.files"/>
		<mkdir dir="${dist.code.dir}/test-data"/>
		<copy todir="${dist.code.dir}/test-data">
			<fileset dir="test" includes="filedb.tsv"/>
			<fileset dir="test" includes="mz-input-small.tsv"/>
			<fileset dir="test/res" includes="filedb-small-mz-match-*"/>
		</copy>
		<copy file="shed.yml" tofile="${dist.code.dir}/.shed.yml"/>
	</target>

	<!--************************************************
	******************** DEPRECATED ********************
	*************************************************-->

	<!--~~~~~~~~~~~~~
	~ UPDATE W4M VM ~
	~~~~~~~~~~~~~~-->

	<!-- This task is used when developping, for updating quickly the tool inside the local W4M virtual machine. -->
	<target name="update.w4m.vm" depends="clean,dist">

		<property name="w4m.login" value="galaxy@w4m"/>
		<property name="tool.path" value="galaxy-pfem/tools/metabolomics/annotation/lcmsmatching"/>

		<!-- Stop Galaxy -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="/sbin/service galaxy stop"/>
		</exec>

		<!-- Remove current tool version -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="rm -rf ${tool.path}"/>
		</exec>

		<!-- Remove old packages on W4M instance -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="rm -f ${PKG.PREFIX}-*.${pkg.ext}"/>
		</exec>

		<!-- Copy new package on W4M instance -->
		<exec executable="scp" failonerror="true">
			<arg value="${dist.dir}/${pkg.name}.${pkg.ext}"/>
			<arg value="${w4m.login}:."/>
		</exec>

		<!-- Make tool directory -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="mkdir -p ${tool.path}"/>
		</exec>

		<!-- Install new tool version -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="tar -xzf ${pkg.name}.${pkg.ext} -C ${tool.path}"/>
		</exec>

		<!-- Restart Galaxy -->
		<exec executable="ssh" failonerror="true">
			<arg value="${w4m.login}"/>
			<arg value="/sbin/service galaxy start"/>
		</exec>

	</target>

</project>