1 <?xml version="1.0" encoding="UTF-8"?>
3 <project name="Phergie" default="core">
6 <format property="DSTAMP" pattern="%Y-%m-%d" />
9 <taskdef name="phergiepkg" classname="PhergiePackageTask" />
10 <taskdef name="phpdocumentor" classname="phing.tasks.ext.phpdoc.PhpDocumentorTask" />
12 <available file="./build.properties" property="have_properties_file" />
14 <property name="clean" value="true" />
19 <equals arg1="${have_properties_file}" arg2="true" />
21 <property file="./build.properties" />
24 <input propertyname="build.srcdir" defaultvalue="./" message="Source directory" />
25 <input propertyname="build.dstdir" defaultvalue="./" message="Destination directory" />
26 <input propertyname="build.version.release" message="Release version" />
27 <input propertyname="build.version.api" message="API version" />
28 <input propertyname="build.stability.release" defaultvalue="stable" message="Release stability" validArgs="snapshot,devel,alpha,beta,stable" />
29 <input propertyname="build.stability.api" defaultvalue="stable" message="API stability" validArgs="snapshot,devel,alpha,beta,stable" />
30 <input propertyname="build.notes" message="Release notes" />
31 <input propertyname="build.phpdep" defaultvalue="5.2.0" message="PHP version required" />
32 <input propertyname="build.pearinstallerdep" defaultvalue="1.9.0" message="PEAR installer version required" />
36 <fileset dir="${build.srcdir}" id="core">
37 <include name="phergie.php" />
38 <include name="phergie.bat" />
39 <include name="LICENSE" />
40 <include name="Settings.php.dist" />
41 <include name="Phergie/Autoload.php" />
42 <include name="Phergie/Bot.php" />
43 <include name="Phergie/Config/Exception.php" />
44 <include name="Phergie/Config.php" />
45 <include name="Phergie/Connection/Exception.php" />
46 <include name="Phergie/Connection/Handler.php" />
47 <include name="Phergie/Connection.php" />
48 <include name="Phergie/Driver/Abstract.php" />
49 <include name="Phergie/Driver/Exception.php" />
50 <include name="Phergie/Driver/Streams.php" />
51 <include name="Phergie/Event/Abstract.php" />
52 <include name="Phergie/Event/Command.php" />
53 <include name="Phergie/Event/Exception.php" />
54 <include name="Phergie/Event/Handler.php" />
55 <include name="Phergie/Event/Request.php" />
56 <include name="Phergie/Event/Response.php" />
57 <include name="Phergie/Exception.php" />
58 <include name="Phergie/Hostmask/Exception.php" />
59 <include name="Phergie/Hostmask.php" />
60 <include name="Phergie/Plugin/Abstract.php" />
61 <include name="Phergie/Plugin/Exception.php" />
62 <include name="Phergie/Plugin/Handler.php" />
63 <include name="Phergie/Ui/Abstract.php" />
64 <include name="Phergie/Ui/Console.php" />
69 <target name="core" depends="input">
71 <property name="build.tmpdir" value="Phergie-${build.version.release}" />
72 <property name="build.tarball" value="${build.dstdir}${build.tmpdir}.tgz" />
74 <delete file="${build.tarball}" quiet="true" />
76 <mkdir dir="${build.tmpdir}" />
78 <copy todir="${build.tmpdir}">
79 <fileset refid="core" />
82 <reflexive file="${build.tmpdir}/Phergie/Bot.php">
86 pattern="const VERSION = '[^']+';"
87 replace="const VERSION = '${build.version.release}';"
93 <phergiepkg name="Phergie" dir="${build.tmpdir}">
94 <fileset refid="core" />
95 <option name="baseinstalldir" value="/" />
96 <option name="outputdirectory" value="${build.dstdir}" />
97 <option name="channel" value="pear.phergie.org" />
98 <option name="summary" value="Phergie core library" />
99 <option name="description" value="The Phergie package provides all files necessary to run a basic IRC bot." />
100 <option name="apiversion" value="${build.version.api}" />
101 <option name="apistability" value="${build.stability.api}" />
102 <option name="releaseversion" value="${build.version.release}" />
103 <option name="releasestability" value="${build.stability.release}" />
104 <option name="phpdep" value="${build.phpdep}" />
105 <option name="pearinstallerdep" value="${build.pearinstallerdep}" />
106 <option name="license" value="http://phergie.org/license New BSD License" />
107 <option name="packagetype" value="php" />
108 <option name="notes" value="${build.notes}" />
109 <mapping name="replacements">
111 <element key="path" value="phergie.php" />
112 <element key="type" value="pear-config" />
113 <element key="from" value="/usr/bin/env php" />
114 <element key="to" value="php_bin" />
117 <element key="path" value="phergie.bat" />
118 <element key="type" value="pear-config" />
119 <element key="from" value="@php_bin@" />
120 <element key="to" value="php_bin" />
123 <element key="path" value="phergie.bat" />
124 <element key="type" value="pear-config" />
125 <element key="from" value="@bin_dir@" />
126 <element key="to" value="bin_dir" />
129 <mapping name="exceptions">
130 <element key="phergie.php" value="script" />
131 <element key="phergie.bat" value="script" />
133 <mapping name="releases">
135 <element key="installconditions">
136 <element key="os" value="windows" />
138 <element key="filelist">
139 <element key="install">
140 <element key="phergie.php" value="phergie" />
145 <element key="filelist">
146 <element key="install">
147 <element key="phergie.php" value="phergie" />
149 <element key="ignore">
150 <element value="phergie.bat" />
155 <mapping name="deps">
157 <element key="type" value="ext" />
158 <element key="name" value="pcre" />
161 <element key="type" value="ext" />
162 <element key="name" value="reflection" />
167 <phingcall target="build" />
169 <phingcall target="clean" />
173 <target name="plugin" depends="input">
176 <equals arg1="${have_properties_file}" arg2="true" />
178 <property file="./build.properties" />
181 <input propertyname="build.plugin" message="Short plugin name" />
182 <input propertyname="build.summary" message="Plugin summary" />
183 <input propertyname="build.description" message="Plugin description" />
187 <property name="build.class" value="Phergie_Plugin_${build.plugin}" />
188 <property name="build.tmpdir" value="${build.class}-${build.version.release}" />
189 <property name="build.tarball" value="${build.dstdir}${build.tmpdir}.tgz" />
191 <fileset dir="${build.srcdir}" id="plugin">
192 <include name="Phergie/Plugin/${build.plugin}.php" />
193 <include name="Phergie/Plugin/${build.plugin}/**" />
196 <delete file="${build.tarball}" quiet="true" />
198 <mkdir dir="${build.tmpdir}" />
200 <copy todir="${build.tmpdir}">
201 <fileset refid="plugin" />
204 <phergiepkg name="${build.class}" dir="${build.tmpdir}">
205 <fileset refid="plugin" />
206 <option name="baseinstalldir" value="/" />
207 <option name="outputdirectory" value="${build.dstdir}" />
208 <option name="channel" value="pear.phergie.org"/>
209 <option name="summary" value="${build.summary}"/>
210 <option name="description" value="${build.description}"/>
211 <option name="apiversion" value="${build.version.api}"/>
212 <option name="apistability" value="${build.stability.api}"/>
213 <option name="releaseversion" value="${build.version.release}"/>
214 <option name="releasestability" value="${build.stability.release}"/>
215 <option name="phpdep" value="${build.phpdep}" />
216 <option name="pearinstallerdep" value="${build.pearinstallerdep}" />
217 <option name="license" value="http://phergie.org/license New BSD License"/>
218 <option name="packagetype" value="php"/>
219 <option name="notes" value="${build.notes}"/>
222 <phingcall target="build" />
224 <phingcall target="clean" />
228 <target name="docs" depends="input">
230 <property name="build.tmpdir" value="Phergie_Docs-${build.version.release}" />
231 <property name="build.tarball" value="${build.dstdir}${build.tmpdir}.tgz" />
233 <delete file="${build.tarball}" quiet="true" />
235 <mkdir dir="${build.tmpdir}" />
237 <phpdocumentor title="API Documentation"
238 destdir="${build.tmpdir}/api"
239 output="HTML:Smarty:PHP">
240 <fileset refid="core" />
241 <projdocfileset dir=".">
242 <include name="LICENSE" />
246 <phergiepkg name="Phergie_Docs" dir="${build.tmpdir}">
247 <fileset dir="${build.tmpdir}">
248 <include name="api**" />
250 <option name="baseinstalldir" value="/" />
251 <option name="outputdirectory" value="${build.dstdir}" />
252 <option name="channel" value="pear.phergie.org" />
253 <option name="summary" value="Phergie core library documentation" />
254 <option name="description" value="The Phergie_Docs package provides documentation for the Phergie core libraries." />
255 <option name="apiversion" value="${build.version.api}" />
256 <option name="apistability" value="${build.stability.api}" />
257 <option name="releaseversion" value="${build.version.release}" />
258 <option name="releasestability" value="${build.stability.release}" />
259 <option name="phpdep" value="${build.phpdep}" />
260 <option name="pearinstallerdep" value="${build.pearinstallerdep}" />
261 <option name="license" value="http://phergie.org/license New BSD License" />
262 <option name="packagetype" value="php" />
263 <option name="notes" value="${build.notes}" />
264 <mapping name="exceptions">
265 <element key="api" value="doc" />
269 <phingcall target="build" />
271 <phingcall target="clean" />
275 <target name="build">
277 <tar destfile="${build.tarball}" compression="gzip">
278 <fileset dir="${build.dstdir}">
279 <include name="${build.tmpdir}**" />
280 <include name="package.xml" />
286 <target name="clean">
289 <istrue value="${clean}" />
291 <delete dir="${build.tmpdir}" />
292 <delete file="${build.dstdir}package.xml" />