CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.
This commit is contained in:
parent
514777e8d2
commit
b11cbd8159
4546 changed files with 138 additions and 51 deletions
|
@ -0,0 +1,532 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: ArgumentParser.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Console_GetOpt
|
||||
*/
|
||||
require_once 'Zend/Console/Getopt.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Tool_Framework_Registry_EnabledInterface
|
||||
*/
|
||||
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_ArgumentParser implements Zend_Tool_Framework_Registry_EnabledInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Registry_Interface
|
||||
*/
|
||||
protected $_registry = null;
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Client_Request
|
||||
*/
|
||||
protected $_request = null;
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Client_Response
|
||||
*/
|
||||
protected $_response = null;
|
||||
|
||||
/**#@+
|
||||
* @var array
|
||||
*/
|
||||
protected $_argumentsOriginal = null;
|
||||
protected $_argumentsWorking = null;
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $_help = false;
|
||||
protected $_helpKnownAction = false;
|
||||
protected $_helpKnownProvider = false;
|
||||
protected $_helpKnownSpecialty = false;
|
||||
|
||||
|
||||
/**
|
||||
* setArguments
|
||||
*
|
||||
* @param array $arguments
|
||||
* @return Zend_Tool_Framework_Client_Console_ArgumentParser
|
||||
*/
|
||||
public function setArguments(Array $arguments)
|
||||
{
|
||||
$this->_argumentsOriginal = $this->_argumentsWorking = $arguments;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* setRegistry()
|
||||
*
|
||||
* @param Zend_Tool_Framework_Registry_Interface $registry
|
||||
* @return Zend_Tool_Framework_Client_Console_ArgumentParser
|
||||
*/
|
||||
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
|
||||
{
|
||||
// get the client registry
|
||||
$this->_registry = $registry;
|
||||
|
||||
// set manifest repository, request, response for easy access
|
||||
$this->_manifestRepository = $this->_registry->getManifestRepository();
|
||||
$this->_request = $this->_registry->getRequest();
|
||||
$this->_response = $this->_registry->getResponse();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse() - This method does the work of parsing the arguments into the enpooint request,
|
||||
* this will also (during help operations) fill the response in with information as needed
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function parse()
|
||||
{
|
||||
|
||||
if ($this->_request == null || $this->_response == null) {
|
||||
require_once 'Zend/Tool/Framework/Client/Exception.php';
|
||||
throw new Zend_Tool_Framework_Client_Exception('The client registry must have both a request and response registered.');
|
||||
}
|
||||
|
||||
// setup the help options
|
||||
$helpResponseOptions = array();
|
||||
|
||||
// check to see if the first cli arg is the script name
|
||||
if ($this->_argumentsWorking[0] == $_SERVER['SCRIPT_NAME' ]) {
|
||||
array_shift($this->_argumentsWorking);
|
||||
}
|
||||
|
||||
// process global options
|
||||
try {
|
||||
$this->_parseGlobalPart();
|
||||
} catch (Zend_Tool_Framework_Client_Exception $exception) {
|
||||
$this->_createHelpResponse(array('error' => $exception->getMessage()));
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure there are arguments left
|
||||
if (count($this->_argumentsWorking) == 0) {
|
||||
$this->_request->setDispatchable(false); // at this point request is not dispatchable
|
||||
|
||||
// check to see if this was a help request
|
||||
if ($this->_help) {
|
||||
$this->_createHelpResponse();
|
||||
} else {
|
||||
$this->_createHelpResponse(array('error' => 'An action and provider is required.'));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// process the action part of the command line
|
||||
try {
|
||||
$this->_parseActionPart();
|
||||
} catch (Zend_Tool_Framework_Client_Exception $exception) {
|
||||
$this->_request->setDispatchable(false);
|
||||
$this->_createHelpResponse(array('error' => $exception->getMessage()));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->_helpKnownAction) {
|
||||
$helpResponseOptions = array_merge(
|
||||
$helpResponseOptions,
|
||||
array('actionName' => $this->_request->getActionName())
|
||||
);
|
||||
}
|
||||
|
||||
/* @TODO Action Parameter Requirements */
|
||||
|
||||
// make sure there are more "words" on the command line
|
||||
if (count($this->_argumentsWorking) == 0) {
|
||||
$this->_request->setDispatchable(false); // at this point request is not dispatchable
|
||||
|
||||
// check to see if this is a help request
|
||||
if ($this->_help) {
|
||||
$this->_createHelpResponse($helpResponseOptions);
|
||||
} else {
|
||||
$this->_createHelpResponse(array_merge($helpResponseOptions, array('error' => 'A provider is required.')));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// process the provider part of the command line
|
||||
try {
|
||||
$this->_parseProviderPart();
|
||||
} catch (Zend_Tool_Framework_Client_Exception $exception) {
|
||||
$this->_request->setDispatchable(false);
|
||||
$this->_createHelpResponse(array('error' => $exception->getMessage()));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->_helpKnownProvider) {
|
||||
$helpResponseOptions = array_merge(
|
||||
$helpResponseOptions,
|
||||
array('providerName' => $this->_request->getProviderName())
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->_helpKnownSpecialty) {
|
||||
$helpResponseOptions = array_merge(
|
||||
$helpResponseOptions,
|
||||
array('specialtyName' => $this->_request->getSpecialtyName())
|
||||
);
|
||||
}
|
||||
|
||||
// if there are arguments on the command line, lets process them as provider options
|
||||
if (count($this->_argumentsWorking) != 0) {
|
||||
$this->_parseProviderOptionsPart();
|
||||
}
|
||||
|
||||
// if there is still arguments lingering around, we can assume something is wrong
|
||||
if (count($this->_argumentsWorking) != 0) {
|
||||
$this->_request->setDispatchable(false); // at this point request is not dispatchable
|
||||
if ($this->_help) {
|
||||
$this->_createHelpResponse($helpResponseOptions);
|
||||
} else {
|
||||
$this->_createHelpResponse(array_merge(
|
||||
$helpResponseOptions,
|
||||
array('error' => 'Unknown arguments left on the command line: ' . implode(' ', $this->_argumentsWorking))
|
||||
));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// everything was processed and this is a request for help information
|
||||
if ($this->_help) {
|
||||
$this->_request->setDispatchable(false); // at this point request is not dispatchable
|
||||
$this->_createHelpResponse($helpResponseOptions);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal routine for parsing global options from the command line
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function _parseGlobalPart()
|
||||
{
|
||||
$getoptOptions = array();
|
||||
$getoptOptions['help|h'] = 'HELP';
|
||||
$getoptOptions['verbose|v'] = 'VERBOSE';
|
||||
$getoptOptions['pretend|p'] = 'PRETEND';
|
||||
$getoptOptions['debug|d'] = 'DEBUG';
|
||||
$getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false));
|
||||
|
||||
// @todo catch any exceptions here
|
||||
$getoptParser->parse();
|
||||
|
||||
foreach ($getoptParser->getOptions() as $option) {
|
||||
if ($option == 'pretend') {
|
||||
$this->_request->setPretend(true);
|
||||
} elseif ($option == 'debug') {
|
||||
$this->_request->setDebug(true);
|
||||
} elseif ($option == 'verbose') {
|
||||
$this->_request->setVerbose(true);
|
||||
} else {
|
||||
$property = '_'.$option;
|
||||
$this->{$property} = true;
|
||||
}
|
||||
}
|
||||
|
||||
$this->_argumentsWorking = $getoptParser->getRemainingArgs();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal routine for parsing the action name from the arguments
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function _parseActionPart()
|
||||
{
|
||||
// the next "word" should be the action name
|
||||
$consoleActionName = array_shift($this->_argumentsWorking);
|
||||
|
||||
if ($consoleActionName == '?') {
|
||||
$this->_help = true;
|
||||
return;
|
||||
}
|
||||
|
||||
$actionSearchCriteria = array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'actionName',
|
||||
'value' => $consoleActionName,
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
// is the action name valid?
|
||||
$actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria);
|
||||
|
||||
// check for normalized names as well (all lower, no separators)
|
||||
if (!$actionMetadata) {
|
||||
$actionSearchCriteria['name'] = 'normalizedActionName';
|
||||
$actionSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleActionName));
|
||||
$actionSearchCriteria['clientName'] = 'all';
|
||||
$actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria);
|
||||
}
|
||||
|
||||
// if no action, handle error
|
||||
if (!$actionMetadata) {
|
||||
require_once 'Zend/Tool/Framework/Client/Exception.php';
|
||||
throw new Zend_Tool_Framework_Client_Exception('Action \'' . $consoleActionName . '\' is not a valid action.');
|
||||
}
|
||||
|
||||
// prepare action request name
|
||||
$this->_helpKnownAction = true;
|
||||
$this->_request->setActionName($actionMetadata->getActionName());
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal routine for parsing the provider part of the command line arguments
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function _parseProviderPart()
|
||||
{
|
||||
// get the cli "word" as the provider name from command line
|
||||
$consoleProviderFull = array_shift($this->_argumentsWorking);
|
||||
$consoleSpecialtyName = '_global';
|
||||
|
||||
// if there is notation for specialties? If so, break them up
|
||||
if (strstr($consoleProviderFull, '.')) {
|
||||
list($consoleProviderName, $consoleSpecialtyName) = explode('.', $consoleProviderFull);
|
||||
} else {
|
||||
$consoleProviderName = $consoleProviderFull;
|
||||
}
|
||||
|
||||
if ($consoleProviderName == '?') {
|
||||
$this->_help = true;
|
||||
return;
|
||||
}
|
||||
|
||||
$providerSearchCriteria = array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'providerName',
|
||||
'value' => $consoleProviderName,
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
// get the cli provider names from the manifest
|
||||
$providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
|
||||
|
||||
// check for normalized names as well (all lower, no separators)
|
||||
if (!$providerMetadata) {
|
||||
$providerSearchCriteria['name'] = 'normalizedProviderName';
|
||||
$providerSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleProviderName));
|
||||
$providerSearchCriteria['clientName'] = 'all';
|
||||
$providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
|
||||
}
|
||||
|
||||
if (!$providerMetadata) {
|
||||
require_once 'Zend/Tool/Framework/Client/Exception.php';
|
||||
throw new Zend_Tool_Framework_Client_Exception(
|
||||
'Provider \'' . $consoleProviderFull . '\' is not a valid provider.'
|
||||
);
|
||||
}
|
||||
|
||||
$this->_helpKnownProvider = true;
|
||||
$this->_request->setProviderName($providerMetadata->getProviderName());
|
||||
|
||||
if ($consoleSpecialtyName == '?') {
|
||||
$this->_help = true;
|
||||
return;
|
||||
}
|
||||
|
||||
$providerSpecialtySearchCriteria = array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'specialtyName',
|
||||
'value' => $consoleSpecialtyName,
|
||||
'providerName' => $providerMetadata->getProviderName(),
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
$providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
|
||||
|
||||
if (!$providerSpecialtyMetadata) {
|
||||
$providerSpecialtySearchCriteria['name'] = 'normalizedSpecialtyName';
|
||||
$providerSpecialtySearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleSpecialtyName));
|
||||
$providerSpecialtySearchCriteria['clientName'] = 'all';
|
||||
$providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
|
||||
}
|
||||
|
||||
if (!$providerSpecialtyMetadata) {
|
||||
require_once 'Zend/Tool/Framework/Client/Exception.php';
|
||||
throw new Zend_Tool_Framework_Client_Exception(
|
||||
'Provider \'' . $consoleSpecialtyName . '\' is not a valid specialty.'
|
||||
);
|
||||
}
|
||||
|
||||
$this->_helpKnownSpecialty = true;
|
||||
$this->_request->setSpecialtyName($providerSpecialtyMetadata->getSpecialtyName());
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal routine for parsing the provider options from the command line
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function _parseProviderOptionsPart()
|
||||
{
|
||||
if (current($this->_argumentsWorking) == '?') {
|
||||
$this->_help = true;
|
||||
return;
|
||||
}
|
||||
|
||||
$searchParams = array(
|
||||
'type' => 'Tool',
|
||||
'providerName' => $this->_request->getProviderName(),
|
||||
'actionName' => $this->_request->getActionName(),
|
||||
'specialtyName' => $this->_request->getSpecialtyName(),
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
$actionableMethodLongParamsMetadata = $this->_manifestRepository->getMetadata(
|
||||
array_merge($searchParams, array('name' => 'actionableMethodLongParams'))
|
||||
);
|
||||
|
||||
$actionableMethodShortParamsMetadata = $this->_manifestRepository->getMetadata(
|
||||
array_merge($searchParams, array('name' => 'actionableMethodShortParams'))
|
||||
);
|
||||
|
||||
$paramNameShortValues = $actionableMethodShortParamsMetadata->getValue();
|
||||
|
||||
$getoptOptions = array();
|
||||
$wordArguments = array();
|
||||
$longParamCanonicalNames = array();
|
||||
|
||||
$actionableMethodLongParamsMetadataReference = $actionableMethodLongParamsMetadata->getReference();
|
||||
foreach ($actionableMethodLongParamsMetadata->getValue() as $parameterNameLong => $consoleParameterNameLong) {
|
||||
$optionConfig = $consoleParameterNameLong . '|';
|
||||
|
||||
$parameterInfo = $actionableMethodLongParamsMetadataReference['parameterInfo'][$parameterNameLong];
|
||||
|
||||
// process ParameterInfo into array for command line option matching
|
||||
if ($parameterInfo['type'] == 'string' || $parameterInfo['type'] == 'bool') {
|
||||
$optionConfig .= $paramNameShortValues[$parameterNameLong]
|
||||
. (($parameterInfo['optional']) ? '-' : '=') . 's';
|
||||
} elseif (in_array($parameterInfo['type'], array('int', 'integer', 'float'))) {
|
||||
$optionConfig .= $paramNameShortValues[$parameterNameLong]
|
||||
. (($parameterInfo['optional']) ? '-' : '=') . 'i';
|
||||
} else {
|
||||
$optionConfig .= $paramNameShortValues[$parameterNameLong] . '-s';
|
||||
}
|
||||
|
||||
$getoptOptions[$optionConfig] = ($parameterInfo['description'] != '') ? $parameterInfo['description'] : 'No description available.';
|
||||
|
||||
|
||||
// process ParameterInfo into array for command line WORD (argument) matching
|
||||
$wordArguments[$parameterInfo['position']]['parameterName'] = $parameterInfo['name'];
|
||||
$wordArguments[$parameterInfo['position']]['optional'] = $parameterInfo['optional'];
|
||||
$wordArguments[$parameterInfo['position']]['type'] = $parameterInfo['type'];
|
||||
|
||||
// keep a translation of console to canonical names
|
||||
$longParamCanonicalNames[$consoleParameterNameLong] = $parameterNameLong;
|
||||
}
|
||||
|
||||
|
||||
if (!$getoptOptions) {
|
||||
// no options to parse here, return
|
||||
return;
|
||||
}
|
||||
|
||||
// if non-option arguments exist, attempt to process them before processing options
|
||||
$wordStack = array();
|
||||
while (($wordOnTop = array_shift($this->_argumentsWorking))) {
|
||||
if (substr($wordOnTop, 0, 1) != '-') {
|
||||
array_push($wordStack, $wordOnTop);
|
||||
} else {
|
||||
// put word back on stack and move on
|
||||
array_unshift($this->_argumentsWorking, $wordOnTop);
|
||||
break;
|
||||
}
|
||||
|
||||
if (count($wordStack) == count($wordArguments)) {
|
||||
// when we get at most the number of arguments we are expecting
|
||||
// then break out.
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($wordStack && $wordArguments) {
|
||||
for ($wordIndex = 1; $wordIndex <= count($wordArguments); $wordIndex++) {
|
||||
if (!array_key_exists($wordIndex-1, $wordStack) || !array_key_exists($wordIndex, $wordArguments)) {
|
||||
break;
|
||||
}
|
||||
$this->_request->setProviderParameter($wordArguments[$wordIndex]['parameterName'], $wordStack[$wordIndex-1]);
|
||||
unset($wordStack[$wordIndex-1]);
|
||||
}
|
||||
}
|
||||
|
||||
$getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false));
|
||||
$getoptParser->parse();
|
||||
foreach ($getoptParser->getOptions() as $option) {
|
||||
$value = $getoptParser->getOption($option);
|
||||
$providerParamOption = $longParamCanonicalNames[$option];
|
||||
$this->_request->setProviderParameter($providerParamOption, $value);
|
||||
}
|
||||
|
||||
$this->_argumentsWorking = $getoptParser->getRemainingArgs();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* _createHelpResponse
|
||||
*
|
||||
* @param unknown_type $options
|
||||
*/
|
||||
protected function _createHelpResponse($options = array())
|
||||
{
|
||||
require_once 'Zend/Tool/Framework/Client/Console/HelpSystem.php';
|
||||
$helpSystem = new Zend_Tool_Framework_Client_Console_HelpSystem();
|
||||
$helpSystem->setRegistry($this->_registry);
|
||||
|
||||
if (isset($options['error'])) {
|
||||
$helpSystem->respondWithErrorMessage($options['error']);
|
||||
}
|
||||
|
||||
if (isset($options['actionName']) && isset($options['providerName'])) {
|
||||
$helpSystem->respondWithSpecialtyAndParamHelp($options['providerName'], $options['actionName']);
|
||||
} elseif (isset($options['actionName'])) {
|
||||
$helpSystem->respondWithActionHelp($options['actionName']);
|
||||
} elseif (isset($options['providerName'])) {
|
||||
$helpSystem->respondWithProviderHelp($options['providerName']);
|
||||
} else {
|
||||
$helpSystem->respondWithGeneralHelp();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,378 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: HelpSystem.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Registry_Interface
|
||||
*/
|
||||
protected $_registry = null;
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Client_Response
|
||||
*/
|
||||
protected $_response = null;
|
||||
|
||||
/**
|
||||
* setRegistry()
|
||||
*
|
||||
* @param Zend_Tool_Framework_Registry_Interface $registry
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
|
||||
{
|
||||
$this->_registry = $registry;
|
||||
$this->_response = $registry->getResponse();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* respondWithErrorMessage()
|
||||
*
|
||||
* @param string $errorMessage
|
||||
* @param Exception $exception
|
||||
*/
|
||||
public function respondWithErrorMessage($errorMessage, Exception $exception = null)
|
||||
{
|
||||
// break apart the message into wrapped chunks
|
||||
$errorMessages = explode(PHP_EOL, wordwrap($errorMessage, 70, PHP_EOL, false));
|
||||
|
||||
$text = 'An Error Has Occurred';
|
||||
$this->_response->appendContent($text, array('color' => array('hiWhite', 'bgRed'), 'aligncenter' => true));
|
||||
$this->_response->appendContent($errorMessage, array('indention' => 1, 'blockize' => 72, 'color' => array('white', 'bgRed')));
|
||||
|
||||
if ($exception && $this->_registry->getRequest()->isDebug()) {
|
||||
$this->_response->appendContent($exception->getTraceAsString());
|
||||
}
|
||||
|
||||
$this->_response->appendContent(null, array('separator' => true));
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* respondWithGeneralHelp()
|
||||
*
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
public function respondWithGeneralHelp()
|
||||
{
|
||||
$this->_respondWithHeader();
|
||||
|
||||
$noSeparator = array('separator' => false);
|
||||
|
||||
$this->_response->appendContent('Usage:', array('color' => 'green'))
|
||||
->appendContent(' ', $noSeparator)
|
||||
->appendContent('zf', array_merge(array('color' => 'cyan'), $noSeparator))
|
||||
->appendContent(' [--global-opts]', $noSeparator)
|
||||
->appendContent(' action-name', array_merge(array('color' => 'cyan'), $noSeparator))
|
||||
->appendContent(' [--action-opts]', $noSeparator)
|
||||
->appendContent(' provider-name', array_merge(array('color' => 'cyan'), $noSeparator))
|
||||
->appendContent(' [--provider-opts]', $noSeparator)
|
||||
->appendContent(' [provider parameters ...]')
|
||||
->appendContent(' Note: You may use "?" in any place of the above usage string to ask for more specific help information.', array('color'=>'yellow'))
|
||||
->appendContent(' Example: "zf ? version" will list all available actions for the version provider.', array('color'=>'yellow', 'separator' => 2))
|
||||
->appendContent('Providers and their actions:', array('color' => 'green'));
|
||||
|
||||
$this->_respondWithSystemInformation();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* respondWithActionHelp()
|
||||
*
|
||||
* @param string $actionName
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
public function respondWithActionHelp($actionName)
|
||||
{
|
||||
$this->_respondWithHeader();
|
||||
$this->_response->appendContent('Providers that support the action "' . $actionName . '"', array('color' => 'green'));
|
||||
$this->_respondWithSystemInformation(null, $actionName);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* respondWithSpecialtyAndParamHelp()
|
||||
*
|
||||
* @param string $providerName
|
||||
* @param string $actionName
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
public function respondWithSpecialtyAndParamHelp($providerName, $actionName)
|
||||
{
|
||||
$this->_respondWithHeader();
|
||||
$this->_response->appendContent(
|
||||
'Details for action "' . $actionName . '" and provider "' . $providerName . '"',
|
||||
array('color' => 'green')
|
||||
);
|
||||
$this->_respondWithSystemInformation($providerName, $actionName, true);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* respondWithProviderHelp()
|
||||
*
|
||||
* @param string $providerName
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
public function respondWithProviderHelp($providerName)
|
||||
{
|
||||
$this->_respondWithHeader();
|
||||
$this->_response->appendContent('Actions supported by provider "' . $providerName . '"', array('color' => 'green'));
|
||||
$this->_respondWithSystemInformation($providerName);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* _respondWithHeader()
|
||||
*
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
protected function _respondWithHeader()
|
||||
{
|
||||
/**
|
||||
* @see Zend_Version
|
||||
*/
|
||||
require_once 'Zend/Version.php';
|
||||
$this->_response->appendContent('Zend Framework', array('color' => array('hiWhite'), 'separator' => false));
|
||||
$this->_response->appendContent(' Command Line Console Tool v' . Zend_Version::VERSION . '');
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* _respondWithSystemInformation()
|
||||
*
|
||||
* @param string $providerNameFilter
|
||||
* @param string $actionNameFilter
|
||||
* @param bool $includeAllSpecialties
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
protected function _respondWithSystemInformation($providerNameFilter = null, $actionNameFilter = null, $includeAllSpecialties = false)
|
||||
{
|
||||
$manifest = $this->_registry->getManifestRepository();
|
||||
|
||||
$providerMetadatasSearch = array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'providerName',
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
if (is_string($providerNameFilter)) {
|
||||
$providerMetadatasSearch = array_merge($providerMetadatasSearch, array('providerName' => $providerNameFilter));
|
||||
}
|
||||
|
||||
$actionMetadatasSearch = array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'actionName',
|
||||
'clientName' => 'console'
|
||||
);
|
||||
|
||||
if (is_string($actionNameFilter)) {
|
||||
$actionMetadatasSearch = array_merge($actionMetadatasSearch, array('actionName' => $actionNameFilter));
|
||||
}
|
||||
|
||||
// get the metadata's for the things to display
|
||||
$displayProviderMetadatas = $manifest->getMetadatas($providerMetadatasSearch);
|
||||
$displayActionMetadatas = $manifest->getMetadatas($actionMetadatasSearch);
|
||||
|
||||
// create index of actionNames
|
||||
for ($i = 0; $i < count($displayActionMetadatas); $i++) {
|
||||
$displayActionNames[] = $displayActionMetadatas[$i]->getActionName();
|
||||
}
|
||||
|
||||
foreach ($displayProviderMetadatas as $providerMetadata) {
|
||||
|
||||
$providerNameDisplayed = false;
|
||||
|
||||
$providerName = $providerMetadata->getProviderName();
|
||||
$providerSignature = $providerMetadata->getReference();
|
||||
|
||||
foreach ($providerSignature->getActions() as $actionInfo) {
|
||||
|
||||
$actionName = $actionInfo->getName();
|
||||
|
||||
// check to see if this action name is valid
|
||||
if (($foundActionIndex = array_search($actionName, $displayActionNames)) === false) {
|
||||
continue;
|
||||
} else {
|
||||
$actionMetadata = $displayActionMetadatas[$foundActionIndex];
|
||||
}
|
||||
|
||||
$specialtyMetadata = $manifest->getMetadata(array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'specialtyName',
|
||||
'providerName' => $providerName,
|
||||
'specialtyName' => '_Global',
|
||||
'clientName' => 'console'
|
||||
));
|
||||
|
||||
// lets do the main _Global action first
|
||||
$actionableGlobalLongParamMetadata = $manifest->getMetadata(array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'actionableMethodLongParams',
|
||||
'providerName' => $providerName,
|
||||
'specialtyName' => '_Global',
|
||||
'actionName' => $actionName,
|
||||
'clientName' => 'console'
|
||||
));
|
||||
|
||||
$actionableGlobalMetadatas = $manifest->getMetadatas(array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'actionableMethodLongParams',
|
||||
'providerName' => $providerName,
|
||||
'actionName' => $actionName,
|
||||
'clientName' => 'console'
|
||||
));
|
||||
|
||||
if ($actionableGlobalLongParamMetadata) {
|
||||
|
||||
if (!$providerNameDisplayed) {
|
||||
$this->_respondWithProviderName($providerMetadata);
|
||||
$providerNameDisplayed = true;
|
||||
}
|
||||
|
||||
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableGlobalLongParamMetadata);
|
||||
|
||||
$actionIsGlobal = true;
|
||||
} else {
|
||||
$actionIsGlobal = false;
|
||||
}
|
||||
|
||||
// check for providers without a _Global action
|
||||
$isSingleSpecialProviderAction = false;
|
||||
if (!$actionIsGlobal && count($actionableGlobalMetadatas) == 1) {
|
||||
$isSingleSpecialProviderAction = true;
|
||||
$this->_respondWithProviderName($providerMetadata);
|
||||
$providerNameDisplayed = true;
|
||||
}
|
||||
|
||||
if ($includeAllSpecialties || $isSingleSpecialProviderAction) {
|
||||
|
||||
foreach ($providerSignature->getSpecialties() as $specialtyName) {
|
||||
|
||||
if ($specialtyName == '_Global') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$specialtyMetadata = $manifest->getMetadata(array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'specialtyName',
|
||||
'providerName' => $providerMetadata->getProviderName(),
|
||||
'specialtyName' => $specialtyName,
|
||||
'clientName' => 'console'
|
||||
));
|
||||
|
||||
$actionableSpecialtyLongMetadata = $manifest->getMetadata(array(
|
||||
'type' => 'Tool',
|
||||
'name' => 'actionableMethodLongParams',
|
||||
'providerName' => $providerMetadata->getProviderName(),
|
||||
'specialtyName' => $specialtyName,
|
||||
'actionName' => $actionName,
|
||||
'clientName' => 'console'
|
||||
));
|
||||
|
||||
if($actionableSpecialtyLongMetadata) {
|
||||
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableSpecialtyLongMetadata);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// reset the special flag for single provider action with specialty
|
||||
$isSingleSpecialProviderAction = false;
|
||||
|
||||
if (!$includeAllSpecialties && count($actionableGlobalMetadatas) > 1) {
|
||||
$this->_response->appendContent(' Note: There are specialties, use ', array('color' => 'yellow', 'separator' => false));
|
||||
$this->_response->appendContent(
|
||||
'zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue() . '.?',
|
||||
array('color' => 'cyan', 'separator' => false)
|
||||
);
|
||||
$this->_response->appendContent(' to get specific help on them.', array('color' => 'yellow'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($providerNameDisplayed) {
|
||||
$this->_response->appendContent(null, array('separator' => true));
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* _respondWithProviderName()
|
||||
*
|
||||
* @param Zend_Tool_Framework_Metadata_Tool $providerMetadata
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
protected function _respondWithProviderName(Zend_Tool_Framework_Metadata_Tool $providerMetadata)
|
||||
{
|
||||
$this->_response->appendContent(' ' . $providerMetadata->getProviderName());
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* _respondWithCommand()
|
||||
*
|
||||
* @param Zend_Tool_Framework_Metadata_Tool $providerMetadata
|
||||
* @param Zend_Tool_Framework_Metadata_Tool $actionMetadata
|
||||
* @param Zend_Tool_Framework_Metadata_Tool $specialtyMetadata
|
||||
* @param Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata
|
||||
* @return Zend_Tool_Framework_Client_Console_HelpSystem
|
||||
*/
|
||||
protected function _respondWithCommand(
|
||||
Zend_Tool_Framework_Metadata_Tool $providerMetadata,
|
||||
Zend_Tool_Framework_Metadata_Tool $actionMetadata,
|
||||
Zend_Tool_Framework_Metadata_Tool $specialtyMetadata,
|
||||
Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata)//,
|
||||
//Zend_Tool_Framework_Metadata_Tool $parameterShortMetadata)
|
||||
{
|
||||
$this->_response->appendContent(
|
||||
' zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue(),
|
||||
array('color' => 'cyan', 'separator' => false)
|
||||
);
|
||||
|
||||
if ($specialtyMetadata->getSpecialtyName() != '_Global') {
|
||||
$this->_response->appendContent('.' . $specialtyMetadata->getValue(), array('color' => 'cyan', 'separator' => false));
|
||||
}
|
||||
|
||||
foreach ($parameterLongMetadata->getValue() as $paramName => $consoleParamName) {
|
||||
$methodInfo = $parameterLongMetadata->getReference();
|
||||
$paramString = ' ' . $consoleParamName;
|
||||
if ( ($defaultValue = $methodInfo['parameterInfo'][$paramName]['default']) != null) {
|
||||
$paramString .= '[=' . $defaultValue . ']';
|
||||
}
|
||||
$this->_response->appendContent($paramString . '', array('separator' => false));
|
||||
}
|
||||
|
||||
$this->_response->appendContent(null, array('separator' => true));
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Manifest.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Tool_Framework_Manifest_MetadataManifestable
|
||||
*/
|
||||
require_once 'Zend/Tool/Framework/Manifest/MetadataManifestable.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Filter
|
||||
*/
|
||||
require_once 'Zend/Filter.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Filter_Word_CamelCaseToDash
|
||||
*/
|
||||
require_once 'Zend/Filter/Word/CamelCaseToDash.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Filter_StringToLower
|
||||
*/
|
||||
require_once 'Zend/Filter/StringToLower.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Tool_Framework_Metadata_Tool
|
||||
*/
|
||||
require_once 'Zend/Tool/Framework/Metadata/Tool.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Tool_Framework_Registry_EnabledInterface
|
||||
*/
|
||||
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
|
||||
|
||||
/**
|
||||
* Zend_Tool_Framework_Client_ConsoleClient_Manifest
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_Manifest
|
||||
implements Zend_Tool_Framework_Registry_EnabledInterface,
|
||||
Zend_Tool_Framework_Manifest_MetadataManifestable
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Zend_Tool_Framework_Registry_Interface
|
||||
*/
|
||||
protected $_registry = null;
|
||||
|
||||
/**
|
||||
* setRegistry() - Required for the Zend_Tool_Framework_Registry_EnabledInterface interface
|
||||
*
|
||||
* @param Zend_Tool_Framework_Registry_Interface $registry
|
||||
* @return Zend_Tool_Framework_Client_Console_Manifest
|
||||
*/
|
||||
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
|
||||
{
|
||||
$this->_registry = $registry;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* getMetadata() is required by the Manifest Interface.
|
||||
*
|
||||
* These are the following metadatas that will be setup:
|
||||
*
|
||||
* actionName
|
||||
* - metadata for actions
|
||||
* - value will be a dashed name for the action named in 'actionName'
|
||||
* providerName
|
||||
* - metadata for providers
|
||||
* - value will be a dashed-name for the provider named in 'providerName'
|
||||
* providerSpecialtyNames
|
||||
* - metadata for providers
|
||||
* actionableMethodLongParameters
|
||||
* - metadata for providers
|
||||
* actionableMethodShortParameters
|
||||
* - metadata for providers
|
||||
*
|
||||
* @return array Array of Metadatas
|
||||
*/
|
||||
public function getMetadata()
|
||||
{
|
||||
$metadatas = array();
|
||||
|
||||
// setup the camelCase to dashed filter to use since cli expects dashed named
|
||||
$ccToDashedFilter = new Zend_Filter();
|
||||
$ccToDashedFilter
|
||||
->addFilter(new Zend_Filter_Word_CamelCaseToDash())
|
||||
->addFilter(new Zend_Filter_StringToLower());
|
||||
|
||||
// get the registry to get the action and provider repository
|
||||
$actionRepository = $this->_registry->getActionRepository();
|
||||
$providerRepository = $this->_registry->getProviderRepository();
|
||||
|
||||
// loop through all actions and create a metadata for each
|
||||
foreach ($actionRepository->getActions() as $action) {
|
||||
// each action metadata will be called
|
||||
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
|
||||
'name' => 'actionName',
|
||||
'value' => $ccToDashedFilter->filter($action->getName()),
|
||||
'reference' => $action,
|
||||
'actionName' => $action->getName(),
|
||||
'clientName' => 'console',
|
||||
'clientReference' => $this->_registry->getClient()
|
||||
));
|
||||
}
|
||||
|
||||
foreach ($providerRepository->getProviderSignatures() as $providerSignature) {
|
||||
|
||||
// create the metadata for the provider's cliProviderName
|
||||
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
|
||||
'name' => 'providerName',
|
||||
'value' => $ccToDashedFilter->filter($providerSignature->getName()),
|
||||
'reference' => $providerSignature,
|
||||
'clientName' => 'console',
|
||||
'providerName' => $providerSignature->getName(),
|
||||
'clientReference' => $this->_registry->getClient()
|
||||
));
|
||||
|
||||
// create the metadatas for the per provider specialites in providerSpecaltyNames
|
||||
foreach ($providerSignature->getSpecialties() as $specialty) {
|
||||
|
||||
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
|
||||
'name' => 'specialtyName',
|
||||
'value' => $ccToDashedFilter->filter($specialty),
|
||||
'reference' => $providerSignature,
|
||||
'clientName' => 'console',
|
||||
'providerName' => $providerSignature->getName(),
|
||||
'specialtyName' => $specialty,
|
||||
'clientReference' => $this->_registry->getClient()
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
// $actionableMethod is keyed by the methodName (but not used)
|
||||
foreach ($providerSignature->getActionableMethods() as $actionableMethodData) {
|
||||
|
||||
$methodLongParams = array();
|
||||
$methodShortParams = array();
|
||||
|
||||
// $actionableMethodData get both the long and short names
|
||||
foreach ($actionableMethodData['parameterInfo'] as $parameterInfoData) {
|
||||
|
||||
// filter to dashed
|
||||
$methodLongParams[$parameterInfoData['name']] = $ccToDashedFilter->filter($parameterInfoData['name']);
|
||||
|
||||
// simply lower the character, (its only 1 char after all)
|
||||
$methodShortParams[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]);
|
||||
|
||||
}
|
||||
|
||||
// create metadata for the long name cliActionableMethodLongParameters
|
||||
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
|
||||
'name' => 'actionableMethodLongParams',
|
||||
'value' => $methodLongParams,
|
||||
'clientName' => 'console',
|
||||
'providerName' => $providerSignature->getName(),
|
||||
'specialtyName' => $actionableMethodData['specialty'],
|
||||
'actionName' => $actionableMethodData['actionName'],
|
||||
'reference' => &$actionableMethodData,
|
||||
'clientReference' => $this->_registry->getClient()
|
||||
));
|
||||
|
||||
// create metadata for the short name cliActionableMethodShortParameters
|
||||
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
|
||||
'name' => 'actionableMethodShortParams',
|
||||
'value' => $methodShortParams,
|
||||
'clientName' => 'console',
|
||||
'providerName' => $providerSignature->getName(),
|
||||
'specialtyName' => $actionableMethodData['specialty'],
|
||||
'actionName' => $actionableMethodData['actionName'],
|
||||
'reference' => &$actionableMethodData,
|
||||
'clientReference' => $this->_registry->getClient()
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $metadatas;
|
||||
}
|
||||
|
||||
public function getIndex()
|
||||
{
|
||||
return 10000;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
|
||||
|
||||
/**
|
||||
* Try to align a given text central on the screen.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: AlignCenter.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_ResponseDecorator_AlignCenter
|
||||
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return "aligncenter";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $content
|
||||
* @param integer $lineLength
|
||||
*/
|
||||
public function decorate($content, $lineLength)
|
||||
{
|
||||
if(!is_numeric($lineLength)) {
|
||||
$lineLength = 72;
|
||||
}
|
||||
if(strlen($content) < $lineLength) {
|
||||
$append = false;
|
||||
$len = strlen($content);
|
||||
for($i = $len; $i < $lineLength; $i++) {
|
||||
if($append == true) {
|
||||
$content = $content." ";
|
||||
$append = false;
|
||||
} else {
|
||||
$content = " ".$content;
|
||||
$append = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
|
||||
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
|
||||
|
||||
/**
|
||||
* Take a text and block it into several lines of a fixed length.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @subpackage Framework
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Blockize.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize
|
||||
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'blockize';
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $content
|
||||
* @param int $lineLength
|
||||
* @return string
|
||||
*/
|
||||
public function decorate($content, $lineLength)
|
||||
{
|
||||
if(intval(strval($lineLength)) != $lineLength) {
|
||||
$lineLength = 72;
|
||||
}
|
||||
|
||||
// break apart the message into wrapped chunks
|
||||
$lines = explode(PHP_EOL, wordwrap($content, $lineLength, PHP_EOL, false));
|
||||
$content = array();
|
||||
foreach($lines AS $line) {
|
||||
if(strlen(trim($line)) == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(strlen($line) < $lineLength) {
|
||||
$line .= str_repeat(" ", $lineLength-strlen($line));
|
||||
}
|
||||
$content[] = $line;
|
||||
}
|
||||
return implode(PHP_EOL, $content);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Colorizer.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer
|
||||
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
|
||||
{
|
||||
|
||||
protected $_colorOptions = array(
|
||||
// blacks
|
||||
'black' => '30m',
|
||||
'hiBlack' => '1;30m',
|
||||
'bgBlack' => '40m',
|
||||
// reds
|
||||
'red' => '31m',
|
||||
'hiRed' => '1;31m',
|
||||
'bgRed' => '41m',
|
||||
// greens
|
||||
'green' => '32m',
|
||||
'hiGreen' => '1;32m',
|
||||
'bgGreen' => '42m',
|
||||
// yellows
|
||||
'yellow' => '33m',
|
||||
'hiYellow' => '1;33m',
|
||||
'bgYellow' => '43m',
|
||||
// blues
|
||||
'blue' => '34m',
|
||||
'hiBlue' => '1;34m',
|
||||
'bgBlue' => '44m',
|
||||
// magentas
|
||||
'magenta' => '35m',
|
||||
'hiMagenta' => '1;35m',
|
||||
'bgMagenta' => '45m',
|
||||
// cyans
|
||||
'cyan' => '36m',
|
||||
'hiCyan' => '1;36m',
|
||||
'bgCyan' => '46m',
|
||||
// whites
|
||||
'white' => '37m',
|
||||
'hiWhite' => '1;37m',
|
||||
'bgWhite' => '47m'
|
||||
);
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'color';
|
||||
}
|
||||
|
||||
public function decorate($content, $color)
|
||||
{
|
||||
if (is_string($color)) {
|
||||
$color = array($color);
|
||||
}
|
||||
|
||||
$newContent = '';
|
||||
|
||||
foreach ($color as $c) {
|
||||
if (array_key_exists($c, $this->_colorOptions)) {
|
||||
$newContent .= "\033[" . $this->_colorOptions[$c];
|
||||
}
|
||||
}
|
||||
|
||||
$newContent .= $content . "\033[m";
|
||||
|
||||
return $newContent;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Indention.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Tool
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Indention
|
||||
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
|
||||
{
|
||||
public function getName()
|
||||
{
|
||||
return 'indention';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $content
|
||||
* @param integer $indention
|
||||
*/
|
||||
public function decorate($content, $indention)
|
||||
{
|
||||
if(strval(intval($indention)) != $indention) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$newContent = "";
|
||||
$lines = preg_split('((\r\n|\r|\n)+)', $content);
|
||||
$lineIndention = str_repeat(' ', $indention);
|
||||
foreach($lines AS $line) {
|
||||
$newContent .= $lineIndention.$line.PHP_EOL;
|
||||
}
|
||||
return rtrim($newContent);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue