1<?xml version="1.0" encoding="utf-8"?>
2<project name="GeSHi" default="pack" basedir=".">
3  <!--
4    GeSHi - Generic Syntax Highlighter - phing build file.
5    Works for 1.0.x
6    Packs up a new version of geshi, tags it in git and releases it on
7    sourceforge.net
8  -->
9  <property file="build.properties" />
10
11  <property name="version"    value="1.0.9.1" />
12  <property name="stability"  value="stable" />
13  <property name="zipfile"    value="${phing.project.name}-${version}.zip" />
14  <property name="gzfile"     value="${phing.project.name}-${version}.tar.gz" />
15  <property name="bz2file"    value="${phing.project.name}-${version}.tar.bz2" />
16  <property name="pkgfile"    value="geshi-${version}.tgz" />
17  <property name="fileprefix" value="geshi/" />
18  <property name="sfproject"  value="GeSHi" />
19  <property name="sffilepath" value="g/ge/geshi/" />
20
21  <property name="releasenotes" value="
22Version 1.0.9.1
23" />
24
25
26  <fileset dir="src" id="files">
27   <include name="**"/>
28   <exclude name="**/.gitignore/"/>
29  </fileset>
30
31  <fileset dir="." id="extra">
32   <include name="contrib/**"/>
33   <include name="docs/**"/>
34  </fileset>
35
36  <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" />
37
38
39
40  <target name="pack" depends=""
41   description="Create zip and tar files for release"
42   >
43    <mkdir dir="dist" />
44    <echo msg="Creating distribution files for ${phing.project.name} ${version}"/>
45
46    <delete file="dist/${zipfile}" failonerror="false"/>
47    <delete file="dist/${gzfile}" failonerror="false"/>
48    <delete file="dist/${bz2file}" failonerror="false"/>
49
50    <zip destfile="dist/${zipfile}" prefix="${fileprefix}">
51     <fileset refid="files" />
52     <fileset refid="extra" />
53    </zip>
54    <tar destfile="dist/${gzfile}" prefix="${fileprefix}" compression="gzip">
55     <fileset refid="files" />
56     <fileset refid="extra" />
57    </tar>
58    <tar destfile="dist/${bz2file}" prefix="${fileprefix}" compression="bzip2">
59     <fileset refid="files" />
60     <fileset refid="extra" />
61    </tar>
62  </target>
63
64
65
66  <target name="pack-pear" depends=""
67   description="Creates the PEAR package"
68  >
69   <mkdir dir="dist/pear" />
70   <delete file="src/package.xml" failonerror="false" />
71   <d51pearpkg2 dir="src" baseinstalldir="/">
72     <name>geshi</name>
73     <summary>Generic syntax highlighter, written in PHP.</summary>
74     <description>
75      GeSHi is a generic syntax highlighter, written in PHP. You simply
76      input the source code you wish to highlight with the language you
77      wish to use, and the output will be a file syntax highlighted to
78      XHTML standards.
79     </description>
80     <channel>pear.geshi.org</channel>
81
82     <lead user="benbe" name="Benny Baumann" email="benbe@geshi.org" />
83     <license>AGPL</license>
84
85     <version   release="${version}"   api="${version}" />
86     <stability release="${stability}" api="${stability}" />
87
88     <notes>${releasenotes}</notes>
89
90     <dependencies>
91       <php minimum_version="5.3.0" />
92       <pear minimum_version="1.9.0" />
93     </dependencies>
94
95     <!-- map directory (key) to role -->
96     <dirroles key="src">.</dirroles>
97
98     <ignore>**/.gitignore</ignore>
99     <ignore>contrib/**</ignore>
100     <ignore>dist/**</ignore>
101     <ignore>docs/**</ignore>
102     <ignore>*.properties</ignore>
103     <ignore>*.tgz</ignore>
104   </d51pearpkg2>
105   <!-- time to fix the package.xml file since the task does not
106        allow everything we need:
107        - strip the base directory names like src, data and www
108        - remove that dumb baseinstalldir from files
109        - md5sums are generated automatically when packaging
110   -->
111   <!-- yes, we need to generate a 2nd file and move it back -->
112   <copy file="src/package.xml" tofile="src/package2.xml" overwrite="true">
113    <filterchain>
114     <replaceregexp>
115      <!-- remove md5sums -->
116      <regexp
117       pattern="md5sum=&quot;[a-z0-9]{32}&quot; "
118       replace=""
119       />
120      <!-- remove baseinstalldir for files -->
121      <regexp
122       pattern="&lt;file baseinstalldir=&quot;/&quot;"
123       replace="&lt;file"
124       />
125      <!-- install-as for different directories -->
126      <regexp
127       pattern="(&lt;file name=&quot;data/(.+?)&quot;)"
128       replace="\1 install-as=&quot;\2&quot;"
129       />
130      <regexp
131       pattern="(&lt;file name=&quot;doc/(.+?)&quot;)"
132       replace="\1 install-as=&quot;\2&quot;"
133       />
134      <regexp
135       pattern="(&lt;file name=&quot;tests/(.+?)&quot;)"
136       replace="\1 install-as=&quot;\2&quot;"
137       />
138      <regexp
139       pattern="(&lt;file name=&quot;www/(.+?)&quot;)"
140       replace="\1 install-as=&quot;phorkie/\2&quot;"
141       />
142      <regexp
143       pattern="(&lt;file name=&quot;src/(.+?)&quot;)"
144       replace="\1 install-as=&quot;\2&quot;"
145       />
146     </replaceregexp>
147    </filterchain>
148   </copy>
149   <move file="src/package2.xml" tofile="src/package.xml" overwrite="true" />
150
151   <!-- package up -->
152   <exec command="pear package" passthru="true" dir="src" />
153   <move file="src/${pkgfile}" todir="${phing.dir}/dist/pear/" />
154
155   <delete file="src/package.xml" failonerror="true" />
156  </target>
157
158
159
160  <target name="release" depends="check,pack,pack-pear,deploy-sf,gittag"
161   description="Release the version on sourceforge"
162   >
163   <!-- meta-target -->
164  </target>
165
166
167  <!--
168  https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download
169  -->
170  <target name="deploy-sf" depends="check,pack"
171   description="Upload release to sourceforge"
172   >
173    <delete dir="dist/deploy-sf" /><!-- make empty -->
174    <mkdir dir="dist/deploy-sf" />
175    <mkdir dir="dist/deploy-sf/geshi" />
176    <mkdir dir="dist/deploy-sf/geshi/GeSHi ${version}" />
177    <copy todir="dist/deploy-sf/geshi/GeSHi ${version}/">
178     <fileset dir="dist">
179      <include name="${zipfile}" />
180      <include name="${gzfile}" />
181      <include name="${bz2file}" />
182     </fileset>
183    </copy>
184    <!-- test
185    <exec command="rsync -av dist/deploy-sf/ /tmp/test/" escape="false" />
186    -->
187    <exec
188     command="rsync -av -e ssh dist/deploy-sf/ ${sfuser},${sfproject}@frs.sourceforge.net:/home/frs/project/${sffilepath}/${sfproject}/"
189     escape="false" checkreturn="false"
190     />
191
192    <!-- rsync always returns code 23 on sourceforge releases, so we
193         can't check return values -->
194  </target>
195
196
197  <target name="gittag"
198   description="create the git tag for the current version"
199   >
200    <exec
201     command="git tag v${version}'"
202     escape="false" checkreturn="true"
203     />
204  </target>
205
206
207  <target name="check"
208   description="Check variables"
209   >
210    <fail unless="version" message="Version not defined!" />
211    <fail unless="sfuser" message="Sourceforge username not defined!" />
212    <fail unless="sfproject" message="Sourceforge project name not defined!" />
213    <fail unless="sffilepath" message="Sourceforge project file path not defined!" />
214  </target>
215
216</project>
217