PHPExcel/Build/build.xml
2011-02-10 16:30:33 +00:00

232 lines
8.4 KiB
XML

<?xml version="1.0"?>
<project name="PHPExcel" default="release-standard" basedir=".">
<taskdef classname="phing.tasks.ext.d51PearPkg2Task" name="d51pearpkg2"/>
<propertyprompt propertyName="packageVersion" defaultValue="1.0.0"
promptText="Enter PHPExcel version number" />
<propertyprompt propertyName="releaseDate" defaultValue="2010-01-01"
promptText="Enter PHPExcel release date" />
<adhoc-task name="phpzip">
<![CDATA[
class PhpZipTask extends Task {
private $destinationFile;
private $filesets = array();
function setDestfile(PhingFile $f) {
$this->destinationFile = $f;
}
function createFileSet() {
$num = array_push($this->filesets, new FileSet());
return $this->filesets[$num-1];
}
function main() {
if ($this->destinationFile === null || empty($this->filesets)) {
throw new BuildException("You must specify a file or fileset(s) for the <phpzip> task.");
}
// compile a list of all files to add to the file, both file attrib and fileset elements
// can be used.
$files = array();
if (!empty($this->filesets)) {
$filenames = array();
foreach($this->filesets as $fs) {
try {
$ds = $fs->getDirectoryScanner($this->project);
$filenames = $ds->getIncludedFiles(); // get included filenames
$dir = $fs->getDir($this->project);
foreach ($filenames as $fname) {
$files[] = new PhingFile($dir, $fname);
}
} catch (BuildException $be) {
$this->log($be->getMessage(), Project::MSG_WARN);
}
}
}
$objZip = new ZipArchive();
if ($objZip->open($this->destinationFile, ZIPARCHIVE::OVERWRITE) !== true) {
throw new Exeption("Could not open " . $strResultingFile . " for writing!");
}
$this->log("Creating ZIP archive of " . count($files) . " files...");
foreach($files as $file) {
$this->log("Processing file " . $this->_cleanFileName($file) . " ...");
$contents = file_get_contents($file);
$objZip->addFromString( $this->_cleanFileName($file), $contents );
}
$objZip->close();
$this->log("Created ZIP archive " . $this->destinationFile . '.');
}
/**
* Cleanup a filename
*
* @param string $strFile Filename
* @return string Filename
*/
protected function _cleanFileName($strFile) {
$strFile = str_replace('../', '', $strFile);
$strFile = str_replace('.\\build\\', '', $strFile);
$strFile = str_replace('WINDOWS', '', $strFile);
while (preg_match('/\/\//i', $strFile)) {
$strFile = str_replace('//', '/', $strFile);
}
return $strFile;
}
}
]]>
</adhoc-task>
<target name="prepare">
<echo msg="Creating build directory: ./build" />
<mkdir dir="./build" />
</target>
<target name="build" depends="prepare">
<echo msg="Copying source files to build directory..." />
<copy todir="./build/Classes" overwrite="true">
<fileset dir="../Classes">
<include name="**/*" />
<exclude name="**/.svn" />
</fileset>
</copy>
<copy todir="./build/Documentation" overwrite="true">
<fileset dir="../Documentation">
<include name="*.*" />
<exclude name="**/.svn" />
</fileset>
</copy>
<mkdir dir="./build/Documentation/API" />
<copy todir="./build/Documentation/Examples" overwrite="true">
<fileset dir="../Documentation/Examples">
<include name="**.*" />
<exclude name="**/.svn" />
</fileset>
</copy>
<copy todir="./build/Tests" overwrite="true">
<fileset dir="../Tests">
<include name="**/*" />
<exclude name="**/.svn" />
</fileset>
</copy>
<copy file="../changelog.txt" tofile="./build/changelog.txt" overwrite="true" />
<copy file="../license.txt" tofile="./build/license.txt" overwrite="true" />
<copy file="../install.txt" tofile="./build/install.txt" overwrite="true" />
</target>
<target name="versionNumber" depends="build">
<reflexive>
<fileset dir="./build">
<include pattern="**/*" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="##VERSION##" replace="${packageVersion}"/>
<regexp pattern="##DATE##" replace="${releaseDate}"/>
</replaceregexp>
</filterchain>
</reflexive>
<reflexive>
<fileset dir="./build">
<include pattern="**/changelog.txt" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="Fixed in SVN" replace="${releaseDate} (v${packageVersion})"/>
</replaceregexp>
</filterchain>
</reflexive>
</target>
<target name="apidocs" depends="versionNumber">
<echo msg="Generating API documentation..." />
<phpdoc title="PHPExcel classes"
destdir="./build/Documentation/API"
sourcecode="true"
output="HTML:Smarty:PHP"
defaultcategoryname="PHPExcel"
defaultpackagename="PHPExcel"
pear="true">
<fileset dir="./build/Classes">
<include name="**/*.php" />
</fileset>
</phpdoc>
</target>
<target name="release-standard" depends="apidocs">
<mkdir dir="./release" />
<echo msg="Creating release package (v${packageVersion})..." />
<phpzip destfile="./release/${packageVersion}.zip">
<fileset dir="./build">
<include name="**/*" />
</fileset>
</phpzip>
<echo msg="Cleaning build directory: ./build" />
<delete dir="./build" />
</target>
<target name="release-pear" depends="versionNumber">
<mkdir dir="./release" />
<echo msg="Creating PEAR release package (v${packageVersion})..." />
<d51pearpkg2 dir="./build/Classes" baseinstalldir="PHPExcel">
<name>PHPExcel</name>
<summary>PHP Excel classes</summary>
<channel>pear.pearplex.net</channel>
<description>Project providing a set of classes for the PHP programming language, which allow you to write to Excel 2007 files and read from Excel 2007 files.</description>
<notes>This package ONLY contains the class files, not the documentation and example code. Please refer to http://www.codeplex.com/PHPExcel for those files.</notes>
<lead user="maartenba" name="Maarten Balliauw" email="maarten@phpexcel.net"/>
<license uri="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt">LGPL</license>
<version release="${packageVersion}" api="${packageVersion}"/>
<stability release="stable" api="stable"/>
<dependencies>
<php minimum_version="5.2.0"/>
<pear minimum_version="1.4.0"/>
<extension name="zip" minimum_version="1.8.0"/>
</dependencies>
<dirroles key="PHPExcel/Shared/PDF/fonts">data</dirroles>
</d51pearpkg2>
<exec command="pear package ./build/Classes/package.xml"/>
<move file="PHPExcel-${packageVersion}.tgz" tofile="release/PHPExcel-${packageVersion}.tgz" overwrite="true"/>
<echo msg="Cleaning build directory: ./build" />
<delete dir="./build" />
</target>
<target name="release-documentation">
<mkdir dir="./release" />
<echo msg="Creating documentation release (v${packageVersion})..." />
<copy todir="./release" overwrite="true">
<fileset dir="../Documentation">
<include name="*.*" />
<exclude name="**/.svn" />
</fileset>
</copy>
<copy todir="./release/Examples" overwrite="true">
<fileset dir="../Documentation/Examples">
<include name="**.*" />
<exclude name="**/.svn" />
</fileset>
</copy>
</target>
</project>