summaryrefslogtreecommitdiff
path: root/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php')
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php115
1 files changed, 99 insertions, 16 deletions
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php b/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
index 4f8ee3ab..47945998 100644
--- a/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
+++ b/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
@@ -1,6 +1,6 @@
<?php
/*
- * $Id: PearPackageTask.php 59 2006-04-28 14:49:47Z mrook $
+ * $Id: 2078fd5bab3dd6dcea0345a12fce86a24586c765 $
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -74,15 +74,15 @@ include_once 'phing/types/FileSet.php';
*
* @author Hans Lellelid <hans@xmpl.org>
* @package phing.tasks.ext
- * @version $Revision: 1.9 $
+ * @version $Id: 2078fd5bab3dd6dcea0345a12fce86a24586c765 $
*/
class PearPackageTask extends MatchingTask {
/** */
- private $package;
+ protected $package;
/** Base directory for reading files. */
- private $dir;
+ protected $dir;
/** Package file */
private $packageFile;
@@ -91,15 +91,21 @@ class PearPackageTask extends MatchingTask {
private $filesets = array();
/** @var PEAR_PackageFileManager */
- private $pkg;
+ protected $pkg;
private $preparedOptions = array();
/** @var array PearPkgOption[] */
- private $options = array();
+ protected $options = array();
/** Nested <mapping> (complex options) types. */
- private $mappings = array();
+ protected $mappings = array();
+
+ /**
+ * Nested <role> elements
+ * @var PearPkgRole[]
+ */
+ protected $roles = array();
public function init() {
include_once 'PEAR/PackageFileManager.php';
@@ -112,7 +118,7 @@ class PearPackageTask extends MatchingTask {
* Sets PEAR package.xml options, based on class properties.
* @return void
*/
- private function setOptions() {
+ protected function setOptions() {
// 1) first prepare/populate options
$this->populateOptions();
@@ -147,6 +153,11 @@ class PearPackageTask extends MatchingTask {
if (PEAR::isError($e)) {
throw new BuildException("Unable to set options.", new Exception($e->getMessage()));
}
+
+ // convert roles
+ foreach ($this->roles as $role) {
+ $this->pkg->addRole($role->getExtension(), $role->getRole());
+ }
}
/**
@@ -180,9 +191,9 @@ class PearPackageTask extends MatchingTask {
$this->preparedOptions['packagefile'] = $f->getName();
// must end in trailing slash
$this->preparedOptions['outputdirectory'] = $f->getParent() . DIRECTORY_SEPARATOR;
- $this->log("Creating package file: " . $f->__toString(), PROJECT_MSG_INFO);
+ $this->log("Creating package file: " . $f->__toString(), Project::MSG_INFO);
} else {
- $this->log("Creating [default] package.xml file in base directory.", PROJECT_MSG_INFO);
+ $this->log("Creating [default] package.xml file in base directory.", Project::MSG_INFO);
}
// converts option objects and mapping objects into
@@ -244,11 +255,12 @@ class PearPackageTask extends MatchingTask {
/**
* Nested creator, creates a FileSet for this task
*
- * @return FileSet The created fileset object
+ * @param FileSet $fileset Set of files to add to the package
+ *
+ * @return void
*/
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
+ public function addFileSet(FileSet $fs) {
+ $this->filesets[] = $fs;
}
/**
@@ -289,7 +301,7 @@ class PearPackageTask extends MatchingTask {
/**
* Handles nested generic <option> elements.
*/
- function createOption() {
+ public function createOption() {
$o = new PearPkgOption();
$this->options[] = $o;
return $o;
@@ -298,17 +310,30 @@ class PearPackageTask extends MatchingTask {
/**
* Handles nested generic <option> elements.
*/
- function createMapping() {
+ public function createMapping() {
$o = new PearPkgMapping();
$this->mappings[] = $o;
return $o;
}
+
+ /**
+ * Handles nested <role> elements
+ * @return PearPkgRole
+ */
+ public function createRole()
+ {
+ $role = new PearPkgRole();
+ $this->roles[] = $role;
+ return $role;
+ }
}
/**
* Generic option class is used for non-complex options.
+ *
+ * @package phing.tasks.ext
*/
class PearPkgOption {
@@ -326,6 +351,8 @@ class PearPkgOption {
/**
* Handles complex options <mapping> elements which are hashes (assoc arrays).
+ *
+ * @package phing.tasks.ext
*/
class PearPkgMapping {
@@ -369,6 +396,8 @@ class PearPkgMapping {
/**
* Sub-element of <mapping>.
+ *
+ * @package phing.tasks.ext
*/
class PearPkgMappingElement {
@@ -419,3 +448,57 @@ class PearPkgMappingElement {
}
}
+
+/**
+ * Encapsulates file roles
+ *
+ * @package phing.tasks.ext
+ */
+class PearPkgRole
+{
+ /**
+ * @var string
+ */
+ private $extension;
+
+ /**
+ * @var string
+ */
+ private $role;
+
+ /**
+ * Sets the file extension
+ * @param string $extension
+ */
+ public function setExtension($extension)
+ {
+ $this->extension = $extension;
+ }
+
+ /**
+ * Retrieves the file extension
+ * @return string
+ */
+ public function getExtension()
+ {
+ return $this->extension;
+ }
+
+ /**
+ * Sets the role
+ * @param string $role
+ */
+ public function setRole($role)
+ {
+ $this->role = $role;
+ }
+
+ /**
+ * Retrieves the role
+ * @return string
+ */
+ public function getRole()
+ {
+ return $this->role;
+ }
+} \ No newline at end of file