Skip to content

Instantly share code, notes, and snippets.

@Caffe1neAdd1ct
Last active January 3, 2017 15:54
Show Gist options
  • Save Caffe1neAdd1ct/0bc2ef4a36dc870e83fed62493bc882b to your computer and use it in GitHub Desktop.
Save Caffe1neAdd1ct/0bc2ef4a36dc870e83fed62493bc882b to your computer and use it in GitHub Desktop.
Cake 1.3 Phing Build Script with Composer
<?xml version="1.0" encoding="UTF-8"?>
<project name="my-project-name" default="bundle" basedir="." description="Build file for my-project-name.">
<property name="export.dir" value="build/export" />
<autoloader autoloaderpath="vendor/autoload.php"/>
<fileset dir="app/tmp/" id="tmp">
<include name="**" />
<exclude name="**/.gitkeep" />
<exclude name=".gitkeep" />
</fileset>
<fileset dir="${export.dir}/logs/" id="logs">
<include name="**"/>
</fileset>
<fileset dir="." id ="all">
<include name="**" />
<exclude name="build/**" />
<exclude name="mvc/**" />
<exclude name="docs/**" />
<exclude name="logs/**" />
<exclude name=".gitignore" />
<exclude name=".gitmodules" />
<exclude name="apidoc.json" />
<exclude name="build.xml" />
<exclude name="public_html/vendor" />
<exclude name="public_html/vendor/**" />
<exclude name="public_html/router.php" />
<exclude name="vendor" />
<exclude name="vendor/**" />
<exclude name="nbproject" />
<exclude name="nbproject/**" />
<exclude name=".gitkeep" />
</fileset>
<target name="clean" description="Clean tmp, cache and other generated files.">
<delete includeemptydirs="false">
<fileset refid="tmp" />
</delete>
<phingcall target="cleanExport" />
</target>
<target name="cleanExport" description="">
<delete includeemptydirs="true" failonerror="true">
<fileset dir="${export.dir}" defaultexcludes="false">
<include name="**/**" />
<exclude name=".gitkeep" />
</fileset>
</delete>
</target>
<target name="copy" depends="cleanExport" description="Copy project to export directory ready for bundle prep.">
<copy todir="${export.dir}" haltonerror="true">
<fileset refid="all" />
</copy>
</target>
<target name="composer" depends="copy" description="">
<if>
<not>
<available file="build/bin/composer.phar" type="file" />
</not>
<then>
<phingcall target="getComposer"></phingcall>
</then>
</if>
<composer composer="build/bin/composer.phar" command="install">
<arg value="--no-dev" />
<arg value="--working-dir" />
<arg file="${export.dir}" />
</composer>
</target>
<target name="getComposer" description="">
<httpget url="https://getcomposer.org/composer.phar" dir="build/bin"></httpget>
</target>
<target name="prepare" depends="composer" description="">
</target>
<target name="bundle" depends="prepare" description="Bundle code into artifact file and clean export directory">
<tstamp>
<format property="artifact.date" pattern="%Y-%m-%d-%H-%M-%S" locale="en_GB"/>
</tstamp>
<tar destfile="build/artifacts/release-${artifact.date}.tar.gz" basedir="" compression="gzip" includeemptydirs="true">
<fileset dir="${export.dir}/.">
<include name="**/**" />
<exclude name=".gitkeep" />
</fileset>
</tar>
<phingcall target="cleanExport" />
</target>
<target name="cleanLocal" description="Clean local project cache">
<delete>
<fileset dir="app/tmp/">
<include name="**" />
</fileset>
</delete>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment