initial commit

This commit is contained in:
Chris Sewell
2012-11-28 03:55:08 -05:00
parent 7adb399b2e
commit cf140a2e97
3247 changed files with 492437 additions and 0 deletions

View File

@ -0,0 +1,268 @@
<?php
/*
* $Id: BuildPropelGenPEARPackageTask.php 3752 2007-04-11 09:11:18Z fabien $
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information please see
* <http://phing.info>.
*/
require_once 'phing/tasks/system/MatchingTask.php';
include_once 'phing/types/FileSet.php';
include_once 'phing/tasks/ext/pearpackage/Fileset.php';
/**
*
* @author Hans Lellelid <hans@xmpl.org>
* @package phing.tasks.ext
* @version $Revision: 536 $
*/
class BuildPropelGenPEARPackageTask extends MatchingTask {
/** Base directory for reading files. */
private $dir;
private $version;
private $state = 'stable';
private $notes;
private $filesets = array();
/** Package file */
private $packageFile;
public function init() {
include_once 'PEAR/PackageFileManager2.php';
if (!class_exists('PEAR_PackageFileManager2')) {
throw new BuildException("You must have installed PEAR_PackageFileManager2 (PEAR_PackageFileManager >= 1.6.0) in order to create a PEAR package.xml file.");
}
}
private function setOptions($pkg){
$options['baseinstalldir'] = 'propel';
$options['packagedirectory'] = $this->dir->getAbsolutePath();
if (empty($this->filesets)) {
throw new BuildException("You must use a <fileset> tag to specify the files to include in the package.xml");
}
$options['filelistgenerator'] = 'Fileset';
// Some PHING-specific options needed by our Fileset reader
$options['phing_project'] = $this->getProject();
$options['phing_filesets'] = $this->filesets;
if ($this->packageFile !== null) {
// create one w/ full path
$f = new PhingFile($this->packageFile->getAbsolutePath());
$options['packagefile'] = $f->getName();
// must end in trailing slash
$options['outputdirectory'] = $f->getParent() . DIRECTORY_SEPARATOR;
$this->log("Creating package file: " . $f->getPath(), PROJECT_MSG_INFO);
} else {
$this->log("Creating [default] package.xml file in base directory.", PROJECT_MSG_INFO);
}
// add install exceptions
$options['installexceptions'] = array( 'pear/pear-propel-gen' => '/',
'pear/pear-propel-gen.bat' => '/',
'pear/pear-build.xml' => '/',
'pear/build.properties' => '/',
);
$options['dir_roles'] = array( 'projects' => 'data',
'test' => 'test',
'templates' => 'data',
'resources' => 'data');
$options['exceptions'] = array( 'pear/pear-propel-gen.bat' => 'script',
'pear/pear-propel-gen' => 'script',
'pear/pear-build.xml' => 'data',
'build.xml' => 'data',
'build-propel.xml' => 'data',
);
$pkg->setOptions($options);
}
/**
* Main entry point.
* @return void
*/
public function main() {
if ($this->dir === null) {
throw new BuildException("You must specify the \"dir\" attribute for PEAR package task.");
}
if ($this->version === null) {
throw new BuildException("You must specify the \"version\" attribute for PEAR package task.");
}
$package = new PEAR_PackageFileManager2();
$this->setOptions($package);
// the hard-coded stuff
$package->setPackage('propel_generator');
$package->setSummary('Generator component of the Propel PHP object persistence layer');
$package->setDescription('Propel is an object persistence layer for PHP5 based on Apache Torque. This package provides the generator engine that builds PHP classes and SQL DDL based on an XML representation of your data model.');
$package->setChannel('pear.phpdb.org');
$package->setPackageType('php');
$package->setReleaseVersion($this->version);
$package->setAPIVersion($this->version);
$package->setReleaseStability($this->state);
$package->setAPIStability($this->state);
$package->setNotes($this->notes);
$package->setLicense('LGPL', 'http://www.gnu.org/licenses/lgpl.html');
// Add package maintainers
$package->addMaintainer('lead', 'hans', 'Hans Lellelid', 'hans@xmpl.org');
$package->addMaintainer('lead', 'david', 'David Zuelke', 'dz@bitxtender.com');
// (wow ... this is a poor design ...)
//
// note that the order of the method calls below is creating
// sub-"release" sections which have specific rules. This replaces
// the platformexceptions system in the older version of PEAR's package.xml
//
// Programmatically, I feel the need to re-iterate that this API for PEAR_PackageFileManager
// seems really wrong. Sub-sections should be encapsulated in objects instead of having
// a "flat" API that does not represent the structure being created....
// creating a sub-section for 'windows'
$package->addRelease();
$package->setOSInstallCondition('windows');
$package->addInstallAs('pear/pear-propel-gen.bat', 'propel-gen.bat');
$package->addIgnoreToRelease('pear/pear-propel-gen');
// creating a sub-section for non-windows
$package->addRelease();
$package->addInstallAs('pear/pear-propel-gen', 'propel-gen');
$package->addIgnoreToRelease('pear/pear-propel-gen.bat');
// "core" dependencies
$package->setPhpDep('5.0.0');
$package->setPearinstallerDep('1.4.0');
// "package" dependencies
$package->addPackageDepWithChannel( 'required', 'phing', 'pear.phing.info', '2.2.0RC1');
$package->addPackageDepWithChannel( 'required', 'creole', 'pear.phpdb.org', '1.1.0RC1');
// now add the replacements ....
$package->addReplacement('Phing.php', 'pear-config', '@DATA-DIR@', 'data_dir');
$package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PHP-BIN@', 'php_bin');
$package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@BIN-DIR@', 'bin_dir');
$package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PEAR-DIR@', 'php_dir');
$package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@DATA-DIR@', 'data_dir');
$package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PHP-BIN@', 'php_bin');
$package->addReplacement('pear/pear-propel-gen', 'pear-config', '@BIN-DIR@', 'bin_dir');
$package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PEAR-DIR@', 'php_dir');
$package->addReplacement('pear/pear-propel-gen', 'pear-config', '@DATA-DIR@', 'data_dir');
$package->addReplacement('pear/pear-build.xml', 'pear-config', '@PHP-BIN@', 'php_bin');
$package->addReplacement('pear/pear-build.xml', 'pear-config', '@BIN-DIR@', 'bin_dir');
$package->addReplacement('pear/pear-build.xml', 'pear-config', '@PEAR-DIR@', 'php_dir');
$package->addReplacement('pear/pear-build.xml', 'pear-config', '@DATA-DIR@', 'data_dir');
// now we run this weird generateContents() method that apparently
// is necessary before we can add replacements ... ?
$package->generateContents();
$e = $package->writePackageFile();
if (PEAR::isError($e)) {
throw new BuildException("Unable to write package file.", new Exception($e->getMessage()));
}
}
/**
* Used by the PEAR_PackageFileManager_PhingFileSet lister.
* @return array FileSet[]
*/
public function getFileSets() {
return $this->filesets;
}
// -------------------------------
// Set properties from XML
// -------------------------------
/**
* Nested creator, creates a FileSet for this task
*
* @return FileSet The created fileset object
*/
function createFileSet() {
$num = array_push($this->filesets, new FileSet());
return $this->filesets[$num-1];
}
/**
* Set the version we are building.
* @param string $v
* @return void
*/
public function setVersion($v){
$this->version = $v;
}
/**
* Set the state we are building.
* @param string $v
* @return void
*/
public function setState($v) {
$this->state = $v;
}
/**
* Sets release notes field.
* @param string $v
* @return void
*/
public function setNotes($v) {
$this->notes = $v;
}
/**
* Sets "dir" property from XML.
* @param PhingFile $f
* @return void
*/
public function setDir(PhingFile $f) {
$this->dir = $f;
}
/**
* Sets the file to use for generated package.xml
*/
public function setDestFile(PhingFile $f) {
$this->packageFile = $f;
}
}

View File

@ -0,0 +1,146 @@
<?xml version="1.0"?>
<!--
This build file creates a minimal package of propel-generator files,
builds a package.xml for installation using PEAR and creates the necessary TGZ file.
It's pretty easy to build the PEAR package:
$> cd /path/to/propel-generator
$> phing -Dversion=1.0.0RC1 -f pear\build-pear-package.xml
-->
<project name="propel_generator" basedir="." default="main">
<property name="propelgen.home" value=".."/>
<property name="build.base.dir" value="build"/>
<property name="pkgname" value="${phing.project.name}-${version}"/>
<property name="build.src.dir" value="${build.base.dir}/${pkgname}"/>
<!-- some default properties -->
<property name="notes"><![CDATA[This is the a bugfix release to the 1.2 branch of the Propel Generator.
See: http://propel.phpdb.org/trac/query?status=closed&milestone=1.2.1&resolution=fixed&order=priority for CHANGELOG.
]]></property>
<property name="state" value="devel"/>
<taskdef
name="pear-package"
classname="BuildPropelGenPEARPackageTask" classpath="."/>
<fileset dir="${propelgen.home}/classes/propel" id="classes">
<include name="**"/>
</fileset>
<fileset dir="${propelgen.home}" id="data">
<!--<include name="build.xml"/>-->
<include name="build-propel.xml"/>
<include name="projects/bookstore/*"/>
<include name="projects/treetest/*"/>
<include name="pear/pear-build.xml"/>
<include name="pear/pear-propel*"/>
<include name="pear/build.properties"/>
<include name="default.properties"/>
<include name="templates/**"/>
<include name="resources/**"/>
</fileset>
<!--
==============================================
Main entry point
==============================================
-->
<target name="main" if="version" depends="versioncheck">
<phingcall target="build"/>
<phingcall target="pear-package"/>
<phingcall target="tar"/>
</target>
<!--
===================================================================
Target: checks if language was given, otherwise fail
===================================================================
-->
<target name="versioncheck" unless="version">
<echo message="====================================================="/>
<echo message="Version not specified. You must enter a version. In"/>
<echo message="the future you can add this to build.properties or"/>
<echo message="enter it on the command line: "/>
<echo message=" "/>
<echo message="-Dversion=1.0.0"/>
<echo message="====================================================="/>
<input propertyname="version" promptChar=":">Propel version for package</input>
<property name="pkgname" value="${phing.project.name}-${version}" override="true"/>
<property name="build.src.dir" value="${build.base.dir}/${pkgname}" override="true"/>
</target>
<!--
==============================================
Copy the desired files into the build/ dir
making sure to put them in the directory
structure that will be needed for PEAR install
==============================================
-->
<target name="build">
<echo>-----------------------------</echo>
<echo>| Creating directory layout |</echo>
<echo>-----------------------------</echo>
<delete dir="${build.base.dir}"/>
<mkdir dir="${build.base.dir}"/>
<copy todir="${build.src.dir}">
<fileset refid="classes"/>
<fileset refid="data"/>
</copy>
<!-- some files need to be manually moved here to save headache when
doing the pear package.xml creation -->
<move file="${build.src.dir}/pear/build.properties" todir="${build.src.dir}"/>
<move file="${build.src.dir}/pear/pear-build.xml" todir="${build.src.dir}"/>
<chmod file="${build.src.dir}/pear/pear-propel-gen" mode="755"/>
</target>
<!--
==============================================
Create a PEAR package.xml which will guide the
installation.
==============================================
-->
<target name="pear-package">
<echo>-----------------------------</echo>
<echo>| Creating PEAR package.xml |</echo>
<echo>-----------------------------</echo>
<echo></echo>
<pear-package dir="${build.src.dir}" destFile="${build.base.dir}/package.xml" version="${version}" state="${state}" notes="${notes}">
<fileset dir="${build.src.dir}">
<include name="**"/>
</fileset>
</pear-package>
</target>
<!--
==============================================
Create a tar.gz of the files, which will be
installed by pear package manager.
==============================================
-->
<target name="tar">
<echo>-----------------------------</echo>
<echo>| Creating tar.gz package |</echo>
<echo>-----------------------------</echo>
<property name="tarfile" value="${build.base.dir}/${pkgname}.tgz"/>
<delete file="${tarfile}"/>
<tar destFile="${tarfile}" basedir="${build.base.dir}" />
</target>
</project>

View File

@ -0,0 +1,5 @@
# In this file you can define any properties taht you want to affect
# all projects built using the propel-gen script on this system
#
# See http://propel.phpdb.org/trac/wiki/Users/Documentation/BuildProperties for a
# list of available properties.

View File

@ -0,0 +1,114 @@
<!--
Use this file to faciliate easy per-project building using
PEAR-installed Propel-generator.
This Phing script is invoked via the shell script propel-gen (.bat
for Windows). Normally you should not need to edit this script or
be aware of it in any way.
Normal use:
$> propel-gen /path/to/my/project
Specific target:
$> propel-gen insert-sql /path/to/my/project
-->
<project name="propel-project-builder" default="main" basedir=".">
<!-- set a default target if none provided -->
<property name="target" value="main"/>
<property name="propel.project.dir" value="${project.dir}"/>
<resolvepath propertyName="propel.project.dir" file="${propel.project.dir}" dir="${application.startdir}"/>
<target name="projdircheckExists">
<condition property="projDirExists">
<and>
<not>
<equals arg1="${propel.project.dir}" arg2="" trim="true"/>
</not>
<available file="${propel.project.dir}/build.properties"/>
</and>
</condition>
</target>
<target name="projdircheck" depends="projdircheckExists" unless="projDirExists">
<echo message="====================================================="/>
<echo message="Project directory not specified or invalid. You must "/>
<echo message="specify the path to your project directory and your "/>
<echo message="project directory must contain your build.properties "/>
<echo message="and schema.xml files. "/>
<echo message=" "/>
<echo message="Usage: "/>
<echo message=" "/>
<echo message="$&gt; propel-gen /path/to/projectdir [target]"/>
<echo message=" "/>
<echo message="====================================================="/>
<fail message="No project directory specified."/>
</target>
<target name="configure" depends="projdircheck">
<echo msg="Loading project-specific props from ${project.dir}/build.properties"/>
<property file="${propel.project.dir}/build.properties"/>
</target>
<target name="main" depends="configure"
description="The main target. Includes project-specific build.properties and calls the build-propel.xml script">
<!--<property file="${project.dir}/build.properties"/>-->
<phing phingfile="build-propel.xml" target="${target}"/>
</target>
<!--
Convenience mappings to build-propel.xml main targets
This makes it possible to use this buildfile w/o needing to specify
target as a property, e.g.:
$> phing -Dproject=bookstore insert-sql
The main reason for this is just consistency w/ old build-propel.xml file
(primarily for documentation & user confusion avoidance reasons). There are relatively
few & infrequently changing main targets of build-propel.xml, so it's a non-
issue as far as maintenance is concerned.
-->
<target name="convert-props" depends="configure">
<phing phingfile="build-propel.xml" target="convert-props"/>
</target>
<target name="create-db" depends="configure">
<phing phingfile="build-propel.xml" target="create-db"/>
</target>
<target name="creole" depends="configure">
<phing phingfile="build-propel.xml" target="creole"/>
</target>
<target name="datadtd" depends="configure">
<phing phingfile="build-propel.xml" target="datadtd"/>
</target>
<target name="datadump" depends="configure">
<phing phingfile="build-propel.xml" target="datadump"/>
</target>
<target name="datasql" depends="configure">
<phing phingfile="build-propel.xml" target="datasql"/>
</target>
<target name="insert-sql" depends="configure">
<phing phingfile="build-propel.xml" target="insert-sql"/>
</target>
<target name="om" depends="configure">
<phing phingfile="build-propel.xml" target="om"/>
</target>
<target name="sql" depends="configure">
<phing phingfile="build-propel.xml" target="sql"/>
</target>
</project>

View File

@ -0,0 +1,21 @@
#!/bin/sh
# ------------------------------------------------------------------------
# The phing build script for Unix based systems
# $Id: pear-propel-gen,v 1.2 2004/10/17 13:24:09 hlellelid Exp $
# ------------------------------------------------------------------------
# Change this to reflect your environment if the default value doesn't work
export PHING_COMMAND="phing"
# -------------------------------------------------------------------------
# Do not change anything below this line unless you know what you're doing.
# -------------------------------------------------------------------------
# (currently this is not reached)
if (test -z "$PHING_COMMAND") ; then
echo "WARNING: PHP_COMMAND environment not set. (Assuming phing on PATH)"
export PHING_COMMAND=php
fi
$PHING_COMMAND -f @DATA-DIR@/propel_generator/pear-build.xml -Dproject.dir=$*

View File

@ -0,0 +1,24 @@
@ECHO OFF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: The propel-gen build script for Windows based systems
:: $Id: pear-propel-gen.bat,v 1.2 2004/10/17 13:24:09 hlellelid Exp $
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::----------------------------------------------------------------------------------
:: Please set following to the "phing" script. By default this is expected to be
:: on your path. (You don't need to modify this file if that is the case.)
SET phingScript=phing
::---------------------------------------------------------------------------------
::---------------------------------------------------------------------------------
:: Do not modify below this line!! (Unless you know what your doing :)
::---------------------------------------------------------------------------------
::---------------------------------------------------------------------------------
"%phingScript%" -f @DATA-DIR@\propel_generator\pear-build.xml -Dproject.dir=%*
GOTO :EOF
:PAUSE_END
PAUSE