<?xml version="1.0" encoding="UTF-8"?> <!-- PRADO 3.0 build file - Copyright (C) 2006 PradoSoft Requirements ============ xdebug >= 2.0.0beta4 --> <project name="prado" basedir="." default="help"> <taskdef name="prado-version-check" classname="PradoVersionTask" classpath="buildscripts/phing/tasks"/> <taskdef name="prado-doc" classname="PradoDocTask" classpath="buildscripts/phing/tasks"/> <taskdef name="prado-pear" classname="PradoPearTask" classpath="buildscripts/phing/tasks"/> <taskdef name="prado-quickstart-index" classname="QuickstartIndexTask" classpath="buildscripts/phing/tasks"/> <taskdef name="prado-api-index" classname="ManualIndexTask" classpath="buildscripts/phing/tasks"/> <taskdef name="prado-test" classname="PradoTestTask" classpath="buildscripts/phing/tasks"/> <!-- generates ${prado.version} and ${prado.revision} --> <prado-version-check /> <!-- these are required external commands --> <property name="php" value="php" /> <!-- PHP parser --> <property name="hhc" value="hhc" /> <!-- compile phpdoc into CHM --> <property name="pdflatex" value="pdflatex" /> <!-- generates PDF from LaTex --> <property name="zip" value="zip" /> <!-- zip compression --> <property name="pkgname" value="${phing.project.name}-${prado.version}.r${prado.revision}"/> <property name="build.base.dir" value="build"/> <property name="build.dist.dir" value="${build.base.dir}/dist"/> <property name="build.src.dir" value="${build.base.dir}/${pkgname}"/> <property name="build.doc.dir" value="${build.base.dir}/docs"/> <property name="build.pear.dir" value="${build.base.dir}/pear"/> <property name="build.web.dir" value="${build.base.dir}/web"/> <property name="build.test.dir" value="${build.base.dir}/test-reports"/> <property name="build.coverage.dir" value="${build.base.dir}/code-coverage"/> <property name="build.snapshot.dir" value="${build.base.dir}/snapshot"/> <!-- All Source Files in framework --> <fileset dir="." id="framework"> <exclude name="**/.svn"/> <exclude name="**/*.bak"/> <exclude name="**/*~"/> <exclude name="**/pradolite.php" /> <exclude name="**/prado-cli.php" /> <include name="framework/**/*"/> </fileset> <!-- Surrounding files --> <fileset dir="." id="misc"> <exclude name="**/.svn"/> <exclude name="**/*.bak"/> <exclude name="**/*~"/> <include name="COPYRIGHT"/> <include name="HISTORY"/> <include name="UPGRADE"/> <include name="index.html"/> <include name="requirements/*"/> </fileset> <!-- Documentation --> <fileset dir="." id="docs"> <exclude name="**/.svn"/> <exclude name="**/*.bak"/> <exclude name="**/*~"/> <include name="docs/**/*"/> </fileset> <!-- Demos --> <fileset dir="." id="demos"> <exclude name="**/.svn"/> <exclude name="**/*.bak"/> <exclude name="**/*~"/> <exclude name="**/runtime/*"/> <exclude name="**/assets/*"/> <exclude name="**/runtime/*/**"/> <exclude name="**/assets/*/**"/> <exclude name="demos/blog/protected/Data/Blog.db" /> <include name="demos/**/*"/> </fileset> <fileset dir="." id="test-tools"> <include name="tests/test_tools/**/*"/> </fileset> <!-- Writable files and directories --> <fileset dir="." id="writables"> <include name="${build.src.dir}/demos/**/runtime" /> <include name="${build.src.dir}/demos/**/assets" /> <include name="${build.src.dir}/demos/blog/protected/Data" /> </fileset> <target name="help"> <echo> Welcome to use PRADO build script! ---------------------------------- You may use the following command format to build a target: phing <target name> where <target name> can be one of the following: For all PRADO developers: - test : run unit tests (results are under /build/test-reports); - js : generate Javascript distribution files; For PRADO release manager: - dist : create release files; - build : prepare a directory for distribution; - clean : clean up the build directory; - rebuild : clean first and then build; - docs : generate documentation; - pear : generate PEAR packages; - snapshot: generate nightly snapshot; </echo> </target> <target name="build" depends="js" description="Building standard PRADO package v${prado.version}.${prado.revision}"> <echo>Building pradolite.php...</echo> <delete file="framework/pradolite.php"/> <exec command="${php} build.php" dir="buildscripts/phpbuilder" passthru="true"/> <echo>Copying files to build directory...</echo> <copy todir="${build.src.dir}"> <fileset refid="demos"/> <fileset refid="docs"/> <fileset refid="framework"/> <fileset refid="misc"/> <fileset refid="test-tools" /> </copy> <copy file="buildscripts/classtree/DWExtensionReadme.txt" tofile="${build.src.dir}/editors/Dreamweaver/readme.txt" /> <copy file="framework/pradolite.php" tofile="${build.src.dir}/framework/pradolite.php" /> <copy file="framework/prado-cli.php" tofile="${build.src.dir}/framework/prado-cli.php" /> <echo>Changing file permissions...</echo> <chmod mode="0777"> <fileset refid="writables" /> </chmod> <echo>Building quickstart demo search indices...</echo> <prado-quickstart-index todir="${build.src.dir}/demos/quickstart/protected/index/quickstart" /> </target> <target name="clean"> <echo>Cleaning up the mess</echo> <delete dir="${build.base.dir}"/> </target> <target name="rebuild" depends="clean,build" /> <target name="docs"> <echo>Build PDF + CHM + HTML Docs, it may take about 30 mins</echo> <echo>Building quickstart.pdf...</echo> <delete> <fileset dir="."> <include name="buildscripts/texbuilder/*.aux" /> </fileset> </delete> <exec command="${php} build.php" dir="buildscripts/texbuilder" passthru="true"/> <exec command="${pdflatex} quickstart.tex -interaction=nonstopmode -max-print-line=120" dir="buildscripts/texbuilder" passthru="true"/> <exec command="${pdflatex} quickstart.tex -interaction=nonstopmode -max-print-line=120" dir="buildscripts/texbuilder" passthru="true"/> <exec command="${pdflatex} quickstart.tex -interaction=nonstopmode -max-print-line=120" dir="buildscripts/texbuilder" passthru="true"/> <move file="buildscripts/texbuilder/quickstart.pdf" todir="${build.doc.dir}"/> <echo>Building API manuals...</echo> <delete dir="${build.doc.dir}/manual"/> <mkdir dir="${build.doc.dir}/manual" /> <prado-doc phpdoc="${php} buildscripts/PhpDocumentor/phpdoc" title="PRADO v${prado.version} API Manual" destdir="${build.doc.dir}/manual" sourcepath="framework" ignorelist="*pradolite.php,*prado-cli.php,*3rdParty/*,*Javascripts/*,*I18N/core/*" output="CHM:default:default,HTML:Smarty:PradoSoft" /> <echo>Indexing API manuals...</echo> <prado-api-index docdir="${build.doc.dir}/manual/HTMLSmartyConverter" todir="${build.doc.dir}/manual/HTMLSmartyConverter" /> <copy file="buildscripts/index/search.php" todir="${build.doc.dir}/manual/HTMLSmartyConverter" /> <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/> <echo>Generating CHM Content (Quickstart + ClassDocs)</echo> <exec command="${php} build.php" dir="buildscripts/chmbuilder" passthru="true"/> <echo>Generating CHM Content (WIKI)</echo> <exec command="${php} build.php" dir="buildscripts/wikibuilder" passthru="true"/> <if> <equals arg1="${prado.winbuild}" arg2="true"/> <then> <exec command="${hhc} ${build.doc.dir}/prado3_manual.hhp" /> </then> </if> </target> <target name="dist" depends="rebuild,docs"> <echo>Moving doc files to build...</echo> <mkdir dir="${build.dist.dir}" /> <move file="${build.doc.dir}/quickstart.pdf" todir="${build.src.dir}/docs" /> <move todir="${build.src.dir}/docs/manual"> <fileset dir="${build.doc.dir}/manual/HTMLframesConverter"> <include name="**/**" /> </fileset> </move> <if> <equals arg1="${prado.winbuild}" arg2="true"/> <then> <move file="${build.doc.dir}/manual/CHMdefaultConverter/documentation.chm" tofile="${build.src.dir}/docs/manual.chm" /> </then> </if> <echo>Generating compressed distribution files...</echo> <if> <equals arg1="${prado.winbuild}" arg2="false"/> <then> <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/> <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}" /> </then> </if> <exec command="zip ${pkgname}.zip -r ${pkgname}" dir="${build.base.dir}" /> <move file="${build.base.dir}/${pkgname}.zip" todir="${build.dist.dir}" /> <echo>Generating files for pradosoft.com...</echo> <echo>Compiling class docs...</echo> <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/> <move file="buildscripts/classtree/classes.data" todir="${build.web.dir}/protected/Data" /> <echo>Moving HTML docs to Web folder...</echo> <mkdir dir="${build.web.dir}" /> <move todir="${build.web.dir}/docs/manual"> <fileset dir="${build.doc.dir}/manual/HTMLSmartyConverter"> <include name="**/**" /> </fileset> </move> <echo> Distribution Not Completed Yet!!! The following steps need to be manually performed in order to complete the PRADO distribution: 1. Package DreamWeaver extension by running DW extension manager with buildscripts/classtree/PRADO.mxi and saving the generated file as "${build.src.dir}/editors/Dreamweaver/PRADO.mxp" 2. If building on Linux, the CHM doc file needs to be generated by compiling "${build.doc.dir}/manual/CHMdefaultConverter/phpdoc.hhp" and saving the generated file as "${build.src.dir}/docs/manual.chm" 3. Use winzip (on Windows) and gzip (on Linux) to generate the compressed release files of the direcotry "${build.src.dir}". </echo> </target> <target name="js" description="Compiling Javascript distribution files"> <delete file="framework/Web/Javascripts/js/*.js" /> <exec command="${php} build.php" dir="buildscripts/jsbuilder" passthru="true"/> </target> <target name="test" description="Running unit tests"> <delete dir="${build.test.dir}"/> <mkdir dir="${build.test.dir}"/> <prado-test codecoverage="false" haltonfailure="false" haltonerror="false" printsummary="true"> <batchtest> <fileset dir="tests/unit"> <include name="**/*Test.php"/> </fileset> </batchtest> <formatter type="xml" todir="${build.test.dir}" outfile="unit-tests.xml"/> </prado-test> <phpunit2report infile="${build.test.dir}/unit-tests.xml" format="frames" styledir="buildscripts/phing/style" todir="${build.test.dir}"/> </target> <target name="snapshot" depends="rebuild"> <echo>Generating compressed distribution files...</echo> <if> <equals arg1="${prado.winbuild}" arg2="false"/> <then> <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/> <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}" /> </then> </if> <exec command="zip ${pkgname}.zip -r ${pkgname}" dir="${build.base.dir}" /> <move file="${build.base.dir}/${pkgname}.zip" tofile="${build.snapshot.dir}/prado-latest.zip" /> <copy file="${build.src.dir}/HISTORY" tofile="${build.snapshot.dir}/changelog-latest.txt" /> </target> <!-- <taskdef name="phplint" classname="PhpLintTask" classpath="buildscripts/phing/tasks"/> <taskdef name="xmllint" classname="XmlLintTask" classpath="buildscripts/phing/tasks"/> <taskdef name="analyze" classname="ZendCodeAnalyzerTask" classpath="buildscripts/phing/tasks"/> <taskdef name="pear-package" classname="BuildPradoPEARPackageTask" classpath="buildscripts/phing/tasks"/> <target name="pear" depends="" description="Creating PEAR package"> <mkdir dir="${build.pear.dir}" /> <prado-pear pkgdir="${build.pear.dir}" channel="pear.php.net" version="${prado.version}" state="stable" category="framework" package="prado" summary="PRADO is a ...." pkgdescription="detailed description..." notes="www.pradosoft.com" license="BSD" /> </target> <target name="test" description="Run unit tests"> <echo>Preparing directory structure</echo> <delete dir="${reports.dir}"/> <mkdir dir="${reports.dir}"/> <delete dir="${reports.unit.dir}"/> <delete dir="${reports.codecoverage.dir}"/> <if> <equals arg1="${codecoverage}" arg2="true"/> <then> <mkdir dir="${reports.codecoverage.dir}"/> <echo>Preparing Code Coverage Database</echo> <coverage-setup database="${reports.codecoverage.dir}/coverage.db"> <fileset dir="${src.dir}"> <include name="**/*.php"/> <exclude name="Web/Javascripts/js/clientscripts.php"/> <exclude name="Data/TCache.php"/> <exclude name="DataAccess/**/*.php"/> <exclude name="I18N/core/Gettext/MO.php"/> <exclude name="I18N/core/Gettext/PO.php"/> <exclude name="I18N/core/util.php"/> <exclude name="I18N/TGlobalization.php"/> <exclude name="I18N/TGlobalizationAutoDetect.php"/> <exclude name="Security/TUserManager.php"/> <exclude name="Security/TMembershipManager.php"/> <exclude name="core.php"/> <exclude name="3rdParty/**/*.php"/> <exclude name="pradolite.php"/> <exclude name="prado.php"/> </fileset> </coverage-setup> </then> </if> <echo>Running Unit Tests</echo> <phpunit2 codecoverage="${codecoverage}" haltonfailure="false" haltonerror="false" printsummary="true"> <batchtest> <fileset dir="${tests.dir}"> <include name="**/*Test.php"/> </fileset> </batchtest> <formatter type="xml" todir="${reports.dir}" outfile="logfile.xml"/> </phpunit2> <echo>Creating Unit Test Report</echo> <mkdir dir="${reports.unit.dir}"/> <phpunit2report infile="${reports.dir}/logfile.xml" format="frames" styledir="${reports.style.dir}" todir="${reports.unit.dir}"/> <if> <equals arg1="${codecoverage}" arg2="true"/> <then> <echo>Creating Code Coverage Report</echo> <coverage-report outfile="${reports.dir}/coverage.xml" geshipath="${reports.geshi.dir}" geshilanguagespath="${reports.geshi.dir}/geshi"> <report todir="${reports.codecoverage.dir}" styledir="${reports.style.dir}"/> </coverage-report> </then> </if> </target> <target name="lint" description="Check syntax of PHP source files"> <phplint> <fileset refid="src"/> </phplint> </target> <target name="lint-demos" description="Check syntax of demo files and configuration files"> <echo>Validate application configuration</echo> <xmllint schema="${application.xsd}"> <fileset dir="demos"> <exclude name="**/.svn"/> <include name="**/application.xml"/> </fileset> </xmllint> <echo>Validate page configuration</echo> <xmllint schema="${config.xsd}"> <fileset dir="demos"> <exclude name="**/.svn"/> <include name="**/config.xml"/> </fileset> </xmllint> <phplint> <fileset dir="demos"> <exclude name="**/.svn"/> <include name="**/*.php"/> </fileset> </phplint> </target> <target name="build-pear-package"> <echo>Preparing files for PEAR package...</echo> <delete dir="${build.pear.dir}"/> <mkdir dir="${build.pear.dir}"/> <copy todir="${build.pear.dir}"> <fileset refid="framework"/> <fileset dir="${build.base.dir}"> <include name="${prado.lite}"/> </fileset> </copy> <echo>Creating package.xml...</echo> <pear-package dir="${build.pear.dir}" destFile="${build.base.dir}/pear/package.xml" version="${version}" state="${pear.state}" notes="${notes}"> <fileset refid="framework"/> <fileset dir="${build.base.dir}"> <include name="${prado.lite}"/> </fileset> </pear-package> </target> <target name="dist-pear" depends="build-pear-package" description="Create PRADO PEAR package"> <delete file="${dist.pearfile}"/> <mkdir dir="${dist.base.dir}"/> <exec command="pear package" dir="${build.pear.dir}" passthru="true"/> <move file="${build.pear.dir}/prado3-${version}.tgz" tofile="${dist.pearfile}"/> </target> <target name="analyze" description="Analyze PHP source files with Zend Code Analyzer"> <analyze analyzerPath="${zca}" disable="var-ref-notmodified,var-use-before-def,var-arg-unused,if-if-else"> <fileset refid="src"/> </analyze> </target> <target name="install" description="Install PEAR package locally"> <exec command="sudo pear install ${dist.pearfile}" dir="." passthru="true"/> </target> <target name="uninstall" description="Uninstall PEAR package locally"> <exec command="sudo pear uninstall pear.pradosoft.com/prado3" dir="." passthru="true"/> </target> --> </project>