tasks/system/ExecTask.php
$Id: ExecTask.php 1244 2011-07-29 21:38:51Z mrook $
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.
\ExecTask
Executes a command on the shell.
Use {@link Project#createTask} to register a new Task.
- Parent(s)
- \Task < \ProjectComponent
- Author
- Andreas Aderhold
- Author
- Hans Lellelid
- Author
- Christian Weiske
- Copyright
- 2001,2002 THYRELL. All rights reserved
- Version
- $Revision: 1244 $
Properties

boolean
$checkreturn= 'false'
Whether to check the return code.
falseDetails- Type
- boolean

string
$description= ''
- Type
- string
- Inherited_from
- \Task::$description

boolean
$escape= 'false'
Whether to escape shell command using escapeshellcmd().
falseDetails- Type
- boolean

\Location
$location= ''
- Type
- \Location
- Inherited_from
- \Task::$location

integer
$logLevel= 'Project::MSG_VERBOSE'
Logging level for status messages
Project::MSG_VERBOSEDetails- Type
- integer

boolean
$logOutput= 'false'
Whether to log returned output as MSG_INFO instead of MSG_VERBOSE
falseDetails- Type
- boolean

string
$outputProperty= ''
Property name to set with output value from exec call.
- Type
- string

boolean
$passthru= 'false'
Whether to use PHP's passthru() function instead of exec()
falseDetails- Type
- boolean

\Project
$project= 'null'
Holds a reference to the project that a project component (a task, a target, etc.) belongs to
A reference to the current project instanceInherited from: \ProjectComponent::$project
string
$returnProperty= ''
Property name to set with return value from exec call.
- Type
- string

boolean
$spawn= 'false'
If spawn is set then [unix] programs will redirect stdout and add '&'.
falseDetails- Type
- boolean

\Target
$target= ''
- Type
- \Target
- Inherited_from
- \Task::$target

string
$taskName= ''
- Type
- string
- Inherited_from
- \Task::$taskName

string
$taskType= ''
- Type
- string
- Inherited_from
- \Task::$taskType

\RuntimeConfigurable
$wrapper= ''
- Type
- \RuntimeConfigurable
- Inherited_from
- \Task::$wrapper
Methods

buildCommand(
)
:
voidBuilds the full command to execute and stores it in $command.
- Uses
- \$command

cleanup(
integer $return, array $output
)
:
voidRuns all tasks after command execution: - change working directory back - log output - verify return value
| Name | Type | Description |
|---|---|---|
| $return | integer | Return code |
| $output | array | Array with command output |

createArg(
)
:
\CommandlineArgumentCreates a nested
| Type | Description |
|---|---|
| \CommandlineArgument | Argument object |

executeCommand(
)
:
arrayExecutes the command and returns return code and output.
| Type | Description |
|---|---|
| array | array(return code, array with output) |

getLocation(
)
:
\LocationReturns the location within the buildfile this task occurs. Used by {@link BuildException} to give detailed error messages.
Inherited from: \Task::getLocation()| Type | Description |
|---|---|
| \Location | The location object describing the position of this task within the buildfile. |

getRuntimeConfigurableWrapper(
)
:
\RuntimeConfigurableReturns the wrapper object for runtime configuration
Inherited from: \Task::getRuntimeConfigurableWrapper()| Type | Description |
|---|---|
| \RuntimeConfigurable | The wrapper object used by this task |

getTaskType(
)
:
stringReturns the name of the task under which it was invoked, usually the XML tagname
Inherited from: \Task::getTaskType()| Type | Description |
|---|---|
| string | The type of this task (XML Tag) |

init(
)
:
void
Should throw a BuildException if something goes wrong with the build
This is abstract here, but may not be overloaded by subclasses.
| Exception | Description |
|---|---|
| \BuildException |

isApplicable(
)
:
booleanChecks whether the command shall be executed
| Type | Description |
|---|---|
| boolean | False if the exec command shall not be run |

log(
string $msg, integer $level
=
Project::MSG_INFO
)
:
void
@param string $msg The message to be logged.
| Name | Type | Description |
|---|---|---|
| $msg | string | The message to log |
| $level | integer | The priority of the message |
- See
- \BuildEvent
- See
- \BuildListener

main(
)
:
voidMain method: wraps execute() command.
Should throw a BuildException if someting goes wrong with the build
This is abstract here. Must be overloaded by real tasks.

maybeConfigure(
)
:
voidConfigure this task if it hasn't been done already.
Inherited from: \Task::maybeConfigure()
prepare(
)
:
voidPrepares the command building and execution, i.e.
changes to the specified directory.

setCheckreturn(
boolean $checkreturn
)
:
voidWhether to check the return code.
| Name | Type | Description |
|---|---|---|
| $checkreturn | boolean | If the return code shall be checked |

setCommand(
mixed $command
)
:
voidThe command to use.
| Name | Type | Description |
|---|---|---|
| $command | mixed | String or string-compatible (e.g. w/ __toString()). |

setDescription(
string $desc
)
:
void
| Name | Type | Description |
|---|---|---|
| $desc | string | The text describing the task |

setDir(
\PhingFile $dir
)
:
voidSpecify the working directory for executing this command.
| Name | Type | Description |
|---|---|---|
| $dir | \PhingFile | Working directory |

setError(
\PhingFile $f
)
:
voidFile to which error output should be written.
| Name | Type | Description |
|---|---|---|
| $f | \PhingFile | Error log file |

setEscape(
boolean $escape
)
:
voidWhether to use escapeshellcmd() to escape command.
| Name | Type | Description |
|---|---|---|
| $escape | boolean | If the command shall be escaped or not |

setExecutable(
mixed $executable
)
:
voidThe executable to use.
| Name | Type | Description |
|---|---|---|
| $executable | mixed | String or string-compatible (e.g. w/ __toString()). |

setLevel(
string $level
)
:
voidSet level of log messages generated (default = verbose)
| Name | Type | Description |
|---|---|---|
| $level | string | Log level |

setLocation(
\Location $location
)
:
voidSets the location within the buildfile this task occurs. Called by the parser to set location information.
Inherited from: \Task::setLocation()| Name | Type | Description |
|---|---|---|
| $location | \Location | The location object describing the position of this task within the buildfile. |

setLogoutput(
boolean $logOutput
)
:
voidWhether to log returned output as MSG_INFO instead of MSG_VERBOSE
| Name | Type | Description |
|---|---|---|
| $logOutput | boolean | If output shall be logged visibly |

setOs(
string $os
)
:
voidSpecify OS (or muliple OS) that must match in order to execute this command.
| Name | Type | Description |
|---|---|---|
| $os | string | Operating system string (e.g. "Linux") |

setOutput(
\PhingFile $f
)
:
voidFile to which output should be written.
| Name | Type | Description |
|---|---|---|
| $f | \PhingFile | Output log file |

setOutputProperty(
string $prop
)
:
voidThe name of property to set to output value from exec() call.
| Name | Type | Description |
|---|---|---|
| $prop | string | Property name |

setOwningTarget(
\Target $target
)
:
void
| Name | Type | Description |
|---|---|---|
| $target | \Target | Reference to owning target |

setPassthru(
boolean $passthru
)
:
voidWhether to use PHP's passthru() function instead of exec()
| Name | Type | Description |
|---|---|---|
| $passthru | boolean | If passthru shall be used |

setProject(
\Project $project
)
:
voidReferences the project to the current component.
Inherited from: \ProjectComponent::setProject()| Name | Type | Description |
|---|---|---|
| $project | \Project | The reference to the current project |

setReturnProperty(
string $prop
)
:
voidThe name of property to set to return value from exec() call.
| Name | Type | Description |
|---|---|---|
| $prop | string | Property name |

setRuntimeConfigurableWrapper(
\RuntimeConfigurable $wrapper
)
:
voidSets the wrapper object this task should use for runtime configurable elements.
Inherited from: \Task::setRuntimeConfigurableWrapper()| Name | Type | Description |
|---|---|---|
| $wrapper | \RuntimeConfigurable | The wrapper object this task should use |

setSpawn(
boolean $spawn
)
:
voidWhether to suppress all output and run in the background.
| Name | Type | Description |
|---|---|---|
| $spawn | boolean | If the command is to be run in the background |

setTaskName(
$name
)
:
string
| Name | Type | Description |
|---|---|---|
| $name |
| Type | Description |
|---|---|
| string | A string representing the name of this task for log |

setTaskType(
string $name
)
:
voidSets the type of the task. Usually this is the name of the XML tag
Inherited from: \Task::setTaskType()| Name | Type | Description |
|---|---|---|
| $name | string | The type of this task (XML Tag) |