2020-01-19 20:26:19 +01:00
<?xml version="1.0" encoding="UTF-8"?>
<project name= "name-of-project" default= "full-build" >
<!-- By default, we assume all tools to be on the $PATH -->
<property name= "pdepend" value= "pdepend" />
<property name= "phpcpd" value= "phpcpd" />
<property name= "phpcs" value= "phpcs" />
<property name= "phpdox" value= "phpdox" />
<property name= "phploc" value= "phploc" />
<property name= "phpmd" value= "phpmd" />
<!-- <property name="phpunit" value="phpunit"/> -->
<property name= "phpunit" value= "${basedir}/vendor/bin/phpunit" />
<!-- Use this when the tools are located as PHARs in ${basedir}/build/tools
<property name= "pdepend" value= "${basedir}/build/tools/pdepend.phar" />
<property name= "phpcpd" value= "${basedir}/build/tools/phpcpd.phar" />
<property name= "phpcs" value= "${basedir}/build/tools/phpcs.phar" />
<property name= "phpdox" value= "${basedir}/build/tools/phpdox.phar" />
<property name= "phploc" value= "${basedir}/build/tools/phploc.phar" />
<property name= "phpmd" value= "${basedir}/build/tools/phpmd.phar" />
<property name= "phpunit" value= "${basedir}/build/tools/phpunit.phar" /> -->
<!-- Use this when the tools are managed by Composer in ${basedir}/vendor/bin
<property name= "pdepend" value= "${basedir}/vendor/bin/pdepend" />
<property name= "phpcpd" value= "${basedir}/vendor/bin/phpcpd" />
<property name= "phpcs" value= "${basedir}/vendor/bin/phpcs" />
<property name= "phpdox" value= "${basedir}/vendor/bin/phpdox" />
<property name= "phploc" value= "${basedir}/vendor/bin/phploc" />
<property name= "phpmd" value= "${basedir}/vendor/bin/phpmd" />
<property name= "phpunit" value= "${basedir}/vendor/bin/phpunit" /> -->
<target name= "full-build"
depends="prepare,static-analysis,phpunit,phpdox,-check-failure"
description="Performs static analysis, runs the tests, and generates project documentation"/>
<target name= "full-build-parallel"
depends="prepare,static-analysis-parallel,phpunit,phpdox,-check-failure"
description="Performs static analysis (executing the tools in parallel), runs the tests, and generates project documentation"/>
<target name= "quick-build"
depends="prepare,lint,phpunit-no-coverage"
description="Performs a lint check and runs the tests (without generating code coverage reports)"/>
<target name= "static-analysis"
depends="lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci"
description="Performs static analysis" />
<!-- Adjust the threadCount attribute's value to the number of CPUs -->
<target name= "static-analysis-parallel"
description="Performs static analysis (executing the tools in parallel)">
<parallel threadCount= "2" >
<sequential >
<antcall target= "pdepend" />
<antcall target= "phpmd-ci" />
</sequential>
<antcall target= "lint" />
<antcall target= "phpcpd-ci" />
<antcall target= "phpcs-ci" />
<antcall target= "phploc-ci" />
</parallel>
</target>
<target name= "clean"
unless="clean.done"
description="Cleanup build artifacts">
<delete dir= "${basedir}/build/api" />
<delete dir= "${basedir}/build/coverage" />
<delete dir= "${basedir}/build/logs" />
<delete dir= "${basedir}/build/pdepend" />
<delete dir= "${basedir}/build/phpdox" />
2020-02-12 21:01:48 +01:00
<delete file= "${basedir}/.env" />
2020-01-19 20:26:19 +01:00
<property name= "clean.done" value= "true" />
</target>
<target name= "prepare"
unless="prepare.done"
depends="clean"
description="Prepare for build">
<mkdir dir= "${basedir}/build/api" />
<mkdir dir= "${basedir}/build/coverage" />
<mkdir dir= "${basedir}/build/logs" />
<mkdir dir= "${basedir}/build/pdepend" />
<mkdir dir= "${basedir}/build/phpdox" />
2020-02-12 21:01:48 +01:00
<copy file= "${basedir}/.env.testing" tofile= "${basedir}/.env" overwrite= "true" />
<exec executable= "composer" taskname= "composer" >
<arg value= "install" />
<arg value= "--optimize-autoloader" />
</exec>
<!-- little help debugging -->
<!--
<exec executable= "php" taskname= "artisanDisplayEnv" >
<arg value= "artisan" />
<arg value= "env" />
</exec>
-->
<exec executable= "php" taskname= "artisanKeyGenerate" >
<arg value= "artisan" />
<arg value= "key:generate" />
</exec>
<exec executable= "php" taskname= "artisanRouteCache" >
<arg value= "artisan" />
<arg value= "route:cache" />
</exec>
<exec executable= "php" taskname= "artisanConfigCache" >
<arg value= "artisan" />
<arg value= "config:cache" />
</exec>
<exec executable= "php" taskname= "artisanMigrate" >
<arg value= "artisan" />
<arg value= "migrate:fresh" />
</exec>
2020-01-19 20:26:19 +01:00
<property name= "prepare.done" value= "true" />
</target>
<target name= "lint"
unless="lint.done"
description="Perform syntax check of sourcecode files">
2020-02-12 21:01:48 +01:00
<apply executable= "php" taskname= "lint" failonerror= "true" >
2020-01-19 20:26:19 +01:00
<arg value= "-l" />
2020-02-12 21:01:48 +01:00
<fileset dir= "${basedir}/app" >
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/bootstrap" >
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/config" >
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/database" >
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/resources" >
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/routes" >
2020-01-19 20:26:19 +01:00
<include name= "**/*.php" />
<modified />
</fileset>
<fileset dir= "${basedir}/tests" >
<include name= "**/*.php" />
<modified />
</fileset>
</apply>
<property name= "lint.done" value= "true" />
</target>
<target name= "phploc"
unless="phploc.done"
description="Measure project size using PHPLOC and print human readable output. Intended for usage on the command line.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app" />
<arg path= "${basedir}/bootstrap" />
<arg path= "${basedir}/config" />
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "phploc-ci"
unless="phploc.done"
depends="prepare"
description="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phploc}" taskname= "phploc" >
<arg value= "--count-tests" />
<arg value= "--log-csv" />
<arg path= "${basedir}/build/logs/phploc.csv" />
<arg value= "--log-xml" />
<arg path= "${basedir}/build/logs/phploc.xml" />
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app" />
<arg path= "${basedir}/bootstrap" />
<arg path= "${basedir}/config" />
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phploc.done" value= "true" />
</target>
<target name= "pdepend"
unless="pdepend.done"
depends="prepare"
description="Calculate software metrics using PHP_Depend and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${pdepend}" taskname= "pdepend" >
<arg value= "--jdepend-xml=${basedir}/build/logs/jdepend.xml" />
<arg value= "--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" />
<arg value= "--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" />
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app,${basedir}/bootstrap,${basedir}/config,${basedir}/database,${basedir}/resources,${basedir}/routes" />
2020-01-19 20:26:19 +01:00
</exec>
<property name= "pdepend.done" value= "true" />
</target>
<target name= "phpmd"
unless="phpmd.done"
description="Perform project mess detection using PHPMD and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpmd}" taskname= "phpmd" >
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app,${basedir}/bootstrap,${basedir}/config,${basedir}/database,${basedir}/resources,${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg value= "text" />
<arg path= "${basedir}/build/phpmd.xml" />
</exec>
<property name= "phpmd.done" value= "true" />
</target>
<target name= "phpmd-ci"
unless="phpmd.done"
depends="prepare"
description="Perform project mess detection using PHPMD and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpmd}" taskname= "phpmd" >
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app,${basedir}/bootstrap,${basedir}/config,${basedir}/database,${basedir}/resources,${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg value= "xml" />
<arg path= "${basedir}/build/phpmd.xml" />
<arg value= "--reportfile" />
<arg path= "${basedir}/build/logs/pmd.xml" />
</exec>
<property name= "phpmd.done" value= "true" />
</target>
<target name= "phpcs"
unless="phpcs.done"
description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcs}" taskname= "phpcs" >
2020-02-12 21:01:48 +01:00
<arg value= "--standard=build/phpcs.xml" />
2020-01-19 20:26:19 +01:00
<arg value= "--extensions=php" />
<arg value= "--ignore=autoload.php" />
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app" />
<!-- <arg path="${basedir}/bootstrap" /> -->
<!-- <arg path="${basedir}/config" /> -->
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phpcs.done" value= "true" />
</target>
<target name= "phpcs-ci"
unless="phpcs.done"
depends="prepare"
description="Find coding standard violations using PHP_CodeSniffer and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcs}" output= "/dev/null" taskname= "phpcs" >
<arg value= "--report=checkstyle" />
<arg value= "--report-file=${basedir}/build/logs/checkstyle.xml" />
2020-02-12 21:01:48 +01:00
<arg value= "--standard=${basedir}/build/phpcs.xml" />
2020-01-19 20:26:19 +01:00
<arg value= "--extensions=php" />
<arg value= "--ignore=autoload.php" />
2020-02-12 21:01:48 +01:00
<arg value= "--ignore=bootstrap/cache" />
<arg path= "${basedir}/app" />
<!-- <arg path="${basedir}/bootstrap" /> -->
<!-- <arg path="${basedir}/config" /> -->
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
2020-01-19 20:26:19 +01:00
<arg path= "${basedir}/tests" />
</exec>
<property name= "phpcs.done" value= "true" />
</target>
<target name= "phpcpd"
unless="phpcpd.done"
description="Find duplicate code using PHPCPD and print human readable output. Intended for usage on the command line before committing.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app" />
<!-- Not needed for duplication ?
<arg path= "${basedir}/bootstrap" />
<arg path= "${basedir}/config" />
-->
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
<arg path= "${basedir}/tests" />
2020-01-19 20:26:19 +01:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
<target name= "phpcpd-ci"
unless="phpcpd.done"
depends="prepare"
description="Find duplicate code using PHPCPD and log result in XML format. Intended for usage within a continuous integration environment.">
<exec executable= "${phpcpd}" taskname= "phpcpd" >
<arg value= "--log-pmd" />
<arg path= "${basedir}/build/logs/pmd-cpd.xml" />
2020-02-12 21:01:48 +01:00
<arg path= "${basedir}/app" />
<!-- Not needed for duplication ?
<arg path= "${basedir}/bootstrap" />
<arg path= "${basedir}/config" />
-->
<arg path= "${basedir}/database" />
<arg path= "${basedir}/resources" />
<arg path= "${basedir}/routes" />
<arg path= "${basedir}/tests" />
2020-01-19 20:26:19 +01:00
</exec>
<property name= "phpcpd.done" value= "true" />
</target>
<target name= "phpunit"
unless="phpunit.done"
depends="prepare"
description="Run unit tests with PHPUnit">
<exec executable= "${phpunit}" resultproperty= "result.phpunit" taskname= "phpunit" >
<arg value= "--configuration" />
<arg path= "${basedir}/build/phpunit.xml" />
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "phpunit-no-coverage"
unless="phpunit.done"
depends="prepare"
description="Run unit tests with PHPUnit (without generating code coverage reports)">
<exec executable= "${phpunit}" failonerror= "true" taskname= "phpunit" >
<arg value= "--configuration" />
<arg path= "${basedir}/build/phpunit.xml" />
<arg value= "--no-coverage" />
</exec>
<property name= "phpunit.done" value= "true" />
</target>
<target name= "phpdox"
unless="phpdox.done"
depends="phploc-ci,phpcs-ci,phpmd-ci"
description="Generate project documentation using phpDox">
<exec executable= "${phpdox}" dir= "${basedir}/build" taskname= "phpdox" />
<property name= "phpdox.done" value= "true" />
</target>
<target name= "-check-failure" >
<fail message= "PHPUnit did not finish successfully" >
<condition >
<not >
<equals arg1= "${result.phpunit}" arg2= "0" />
</not>
</condition>
</fail>
</target>
</project>