Class Shell
Base class for command-line utilities for automating programmer chores.
Is the equivalent of Cake\Controller\Controller on the command line.
- Cake\Console\Shell uses Cake\ORM\Locator\LocatorAwareTrait , Cake\Log\LogTrait , Cake\Utility\MergeVariablesTrait , Cake\Datasource\ModelAwareTrait
Direct Subclasses
- Cake\Shell\CacheShell
- Cake\Shell\CommandListShell
- Cake\Shell\Task\ExtractTask
- Cake\Shell\Task\LoadTask
- Cake\Shell\Task\UnloadTask
- Cake\Shell\CompletionShell
- Cake\Shell\I18nShell
- Cake\Shell\PluginShell
- Cake\Shell\RoutesShell
- Cake\Shell\SchemaCacheShell
- Cake\Shell\ServerShell
- Cake\Shell\Task\AssetsTask
- Cake\Shell\Task\CommandTask
Indirect Subclasses
Constants summary
Properties summary
-
$OptionParser
publicAn instance of ConsoleOptionParser that has been configured for this class. -
$Tasks
publicTask Collection for the command, used to create Tasks. -
$_io
protectedConsoleIo instance. -
$_taskMap
protectedarray
Normalized map of tasks. -
$args
publicarray
Contains arguments parsed from the command line. -
$command
publicstring
The command (method/task) that is being run. -
$interactive
publicboolean
If true, the script will ask for permission to perform actions. -
$name
publicstring
The name of the shell in camelized. -
$params
publicarray
Contains command switches parsed from the command line. -
$plugin
publicstring
The name of the plugin the shell belongs to. Is automatically set by ShellDispatcher when a shell is constructed.
-
$rootName
protectedstring
The root command name used when generating help output. -
$taskNames
publicarray
Contains the loaded tasks -
$tasks
publicarray|boolean
Contains tasks to load and instantiate
Inherited Properties
Method Summary
-
__construct() public
Constructs this Shell instance. -
__debugInfo() public
Returns an array that can be used to describe the internal state of this object.
-
__get() public
Overload get for lazy building of tasks -
_displayHelp() protected
Display the help in the correct format -
_setOutputLevel() protected
Set the output level based on the parameters. -
_stop() protected
Stop execution of the current script. Raises a StopException to try and halt the execution.
-
_validateTasks() protected
Checks that the tasks in the task map are actually available -
_welcome() protected
Displays a header for the shell -
abort() public
Displays a formatted error message and exits the application with status code 1
-
clear() public
Clear the console -
createFile() public
Creates a file at given path -
dispatchShell() public
Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.
-
err() public
Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.
-
error() public
Displays a formatted error message and exits the application with status code 1
-
getIo() public
Get the io object for this shell. -
getOptionParser() public
Gets the option parser instance and configures it. -
hasMethod() public
Check to see if this shell has a callable method by the given name. -
hasTask() public
Check to see if this shell has a task with the provided name. -
helper() public
Render a Console Helper -
hr() public
Outputs a series of minus characters to the standard output, acts as a visual separator. -
in() public
Prompts the user for input, and returns it. -
info() public
Convenience method for out() that wraps message betweentag -
initialize() public
Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution
-
io() public
Get/Set the io object for this shell. -
loadTasks() public
Loads tasks defined in public $tasks -
nl() public
Returns a single or multiple linefeeds sequences. -
out() public
Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.
-
param() public
Safely access the values in $this->params. -
parseDispatchArguments() public
Parses the arguments for the dispatchShell() method. -
quiet() public
Output at all levels. -
runCommand() public
Runs the Shell with the provided argv. -
setIo() public
Set the io object for this shell. -
setRootName() public
Set the root command name for help output. -
shortPath() public
Makes absolute file path easier to read -
startup() public
Starts up the Shell and displays the welcome message. Allows for checking and configuring prior to command or main execution
-
success() public
Convenience method for out() that wraps message betweentag -
verbose() public
Output at the verbose level. -
warn() public
Convenience method for err() that wraps message betweentag -
wrapMessageWithType() protected
Wraps a message with a given message type, e.g. -
wrapText() public
Wrap a block of text. Allows you to set the width, and indenting on a block of text.
Method Detail
__construct() public ¶
__construct( Cake\Console\ConsoleIo
$io null , Cake\ORM\Locator\LocatorInterface
$locator null )
Constructs this Shell instance.
Parameters
-
Cake\Console\ConsoleIo
$io optional null - An io instance.
-
Cake\ORM\Locator\LocatorInterface
$locator optional null - Table locator instance.
Link
__debugInfo() public ¶
__debugInfo( )
Returns an array that can be used to describe the internal state of this object.
Returns
__get() public ¶
__get( string $name )
Overload get for lazy building of tasks
Parameters
- string $name
- The task to get.
Returns
_displayHelp() protected ¶
_displayHelp( string $command )
Display the help in the correct format
Parameters
- string $command
- The command to get help for.
Returns
The number of bytes returned from writing to stdout.
_setOutputLevel() protected ¶
_setOutputLevel( )
Set the output level based on the parameters.
This reconfigures both the output level for out() and the configured stdout/stderr logging
_stop() protected ¶
_stop( integer|string $status self::CODE_SUCCESS )
Stop execution of the current script. Raises a StopException to try and halt the execution.
Parameters
- integer|string $status optional self::CODE_SUCCESS
- see https://secure.php.net/exit for values
Throws
_validateTasks() protected ¶
_validateTasks( )
Checks that the tasks in the task map are actually available
Throws
abort() public ¶
abort( string $message , integer $exitCode self::CODE_ERROR )
Displays a formatted error message and exits the application with status code 1
Parameters
- string $message
- The error message
- integer $exitCode optional self::CODE_ERROR
- The exit code for the shell task.
Throws
Link
createFile() public ¶
createFile( string $path , string $contents )
Creates a file at given path
Parameters
- string $path
- Where to put the file.
- string $contents
- Content to put in the file.
Returns
Success
Link
dispatchShell() public ¶
dispatchShell( )
Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.
Usage:
With a string command:
return $this->dispatchShell('schema create DbAcl');
Avoid using this form if you have string arguments, with spaces in them. The dispatched will be invoked incorrectly. Only use this form for simple command dispatching.
With an array command:
return $this->dispatchShell('schema', 'create', 'i18n', '--dry');
With an array having two key / value pairs:
- command
can accept either a string or an array. Represents the command to dispatch
- extra
can accept an array of extra parameters to pass on to the dispatcher. This
parameters will be available in the param
property of the called Shell
return $this->dispatchShell([
'command' => 'schema create DbAcl',
'extra' => ['param' => 'value']
]);
or
return $this->dispatchShell([
'command' => ['schema', 'create', 'DbAcl'],
'extra' => ['param' => 'value']
]);
Returns
The cli command exit code. 0 is success.
Link
err() public ¶
err( string|array|null $message null , integer $newlines 1 )
Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.
Parameters
- string|array|null $message optional null
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
Returns
The number of bytes returned from writing to stderr.
error() public ¶
error( string $title , string|null $message null , integer $exitCode self::CODE_ERROR )
Displays a formatted error message and exits the application with status code 1
Deprecated
Parameters
- string $title
- Title of the error
- string|null $message optional null
- An optional error message
- integer $exitCode optional self::CODE_ERROR
- The exit code for the shell task.
Returns
Error code
Throws
Link
getOptionParser() public ¶
getOptionParser( )
Gets the option parser instance and configures it.
By overriding this method you can configure the ConsoleOptionParser before returning it.
Returns
Link
hasMethod() public ¶
hasMethod( string $name )
Check to see if this shell has a callable method by the given name.
Parameters
- string $name
- The method name to check.
Returns
Link
hasTask() public ¶
hasTask( string $task )
Check to see if this shell has a task with the provided name.
Parameters
- string $task
- The task name to check.
Returns
Success
Link
helper() public ¶
helper( string $name , array $settings [] )
Render a Console Helper
Create and render the output for a helper object. If the helper object has not already been loaded, it will be loaded and constructed.
Parameters
- string $name
- The name of the helper to render
- array $settings optional []
- Configuration data for the helper.
Returns
hr() public ¶
hr( integer $newlines 0 , integer $width 63 )
Outputs a series of minus characters to the standard output, acts as a visual separator.
Parameters
- integer $newlines optional 0
- Number of newlines to pre- and append
- integer $width optional 63
- Width of the line, defaults to 63
Link
in() public ¶
in( string $prompt , string|array|null $options null , string|null $default null )
Prompts the user for input, and returns it.
Parameters
- string $prompt
- Prompt text.
- string|array|null $options optional null
- Array or string of options.
- string|null $default optional null
- Default input value.
Returns
Either the default value, or the user-provided input.
Link
info() public ¶
info( string|array|null $message null , integer $newlines 1 , integer $level Shell::NORMAL )
Convenience method for out() that wraps message between
Parameters
- string|array|null $message optional null
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
- integer $level optional Shell::NORMAL
- The message's output level, see above.
Returns
The number of bytes returned from writing to stdout.
See
initialize() public ¶
initialize( )
Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution
Link
io() public ¶
io( Cake\Console\ConsoleIo
$io null )
Get/Set the io object for this shell.
Deprecated
Parameters
-
Cake\Console\ConsoleIo
$io optional null - The ConsoleIo object to use.
Returns
nl() public ¶
nl( integer $multiplier 1 )
Returns a single or multiple linefeeds sequences.
Parameters
- integer $multiplier optional 1
- Number of times the linefeed sequence should be repeated
Returns
Link
out() public ¶
out( string|array|null $message null , integer $newlines 1 , integer $level Shell::NORMAL )
Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.
Output levels
There are 3 built-in output level. Shell::QUIET, Shell::NORMAL, Shell::VERBOSE.
The verbose and quiet output levels, map to the verbose
and quiet
output switches
present in most shells. Using Shell::QUIET for a message means it will always display.
While using Shell::VERBOSE means it will only display when verbose output is toggled.
Parameters
- string|array|null $message optional null
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
- integer $level optional Shell::NORMAL
- The message's output level, see above.
Returns
The number of bytes returned from writing to stdout.
Link
param() public ¶
param( string $name )
Safely access the values in $this->params.
Parameters
- string $name
- The name of the parameter to get.
Returns
Value. Will return null if it doesn't exist.
parseDispatchArguments() public ¶
parseDispatchArguments( array $args )
Parses the arguments for the dispatchShell() method.
Parameters
- array $args
Arguments fetch from the dispatchShell() method with func_get_args()
Returns
First value has to be an array of the command arguments. Second value has to be an array of extra parameter to pass on to the dispatcher
quiet() public ¶
quiet( string|array $message , integer $newlines 1 )
Output at all levels.
Parameters
- string|array $message
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
Returns
The number of bytes returned from writing to stdout.
runCommand() public ¶
runCommand( array $argv , boolean $autoMethod false , array $extra [] )
Runs the Shell with the provided argv.
Delegates calls to Tasks and resolves methods inside the class. Commands are looked up with the following order:
- Method on the shell.
- Matching task name.
main()
method.
If a shell implements a main()
method, all missing method calls will be sent to
main()
with the original method name in the argv.
For tasks to be invoked they must be exposed as subcommands. If you define any subcommands, you must define all the subcommands your shell needs, whether they be methods on this class or methods on tasks.
Parameters
- array $argv
- Array of arguments to run the shell with. This array should be missing the shell name.
- boolean $autoMethod optional false
Set to true to allow any public method to be called even if it was not defined as a subcommand. This is used by ShellDispatcher to make building simple shells easy.
- array $extra optional []
Extra parameters that you can manually pass to the Shell to be dispatched. Built-in extra parameter is : -
requested
: if used, will prevent the Shell welcome message to be displayed
Returns
Link
setIo() public ¶
setIo( Cake\Console\ConsoleIo
$io )
Set the io object for this shell.
Parameters
-
Cake\Console\ConsoleIo
$io - The ConsoleIo object to use.
setRootName() public ¶
setRootName( string $name )
Set the root command name for help output.
Parameters
- string $name
- The name of the root command.
Returns
$this
shortPath() public ¶
shortPath( string $file )
Makes absolute file path easier to read
Parameters
- string $file
- Absolute file path
Returns
short path
Link
startup() public ¶
startup( )
Starts up the Shell and displays the welcome message. Allows for checking and configuring prior to command or main execution
Override this method if you want to remove the welcome information, or otherwise modify the pre-command flow.
Link
success() public ¶
success( string|array|null $message null , integer $newlines 1 , integer $level Shell::NORMAL )
Convenience method for out() that wraps message between
Parameters
- string|array|null $message optional null
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
- integer $level optional Shell::NORMAL
- The message's output level, see above.
Returns
The number of bytes returned from writing to stdout.
See
verbose() public ¶
verbose( string|array $message , integer $newlines 1 )
Output at the verbose level.
Parameters
- string|array $message
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
Returns
The number of bytes returned from writing to stdout.
warn() public ¶
warn( string|array|null $message null , integer $newlines 1 )
Convenience method for err() that wraps message between
Parameters
- string|array|null $message optional null
- A string or an array of strings to output
- integer $newlines optional 1
- Number of newlines to append
Returns
The number of bytes returned from writing to stderr.
See
wrapMessageWithType() protected ¶
wrapMessageWithType( string $messageType , string|array $message )
Wraps a message with a given message type, e.g.
Deprecated
Parameters
- string $messageType
- The message type, e.g. "warning".
- string|array $message
- The message to wrap.
Returns
The message wrapped with the given message type.
wrapText() public ¶
wrapText( string $text , integer|array $options [] )
Wrap a block of text. Allows you to set the width, and indenting on a block of text.
Options
width
The width to wrap to. Defaults to 72wordWrap
Only wrap on words breaks (spaces) Defaults to true.indent
Indent the text with the string provided. Defaults to null.
Parameters
- string $text
- Text the text to format.
- integer|array $options optional []
- Array of options to use, or an integer to wrap the text to.
Returns
Wrapped / indented text
See
Link
Methods used from Cake\ORM\Locator\LocatorAwareTrait
setTableLocator() public ¶
setTableLocator( Cake\ORM\Locator\LocatorInterface
$tableLocator )
Sets the table locator.
Parameters
-
Cake\ORM\Locator\LocatorInterface
$tableLocator - LocatorInterface instance.
Returns
$this
tableLocator() public ¶
tableLocator( Cake\ORM\Locator\LocatorInterface
$tableLocator null )
Sets the table locator. If no parameters are passed, it will return the currently used locator.
Deprecated
Parameters
-
Cake\ORM\Locator\LocatorInterface
$tableLocator optional null - LocatorInterface instance.
Returns
Methods used from Cake\Log\LogTrait
log() public ¶
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Convenience method to write a message to Log. See Log::write() for more information on writing to logs.
Parameters
- mixed $msg
- Log message.
- integer|string $level optional LogLevel::ERROR
- Error level.
- string|array $context optional []
- Additional log data relevant to this message.
Returns
Success of log write.
Methods used from Cake\Utility\MergeVariablesTrait
_mergeProperty() protected ¶
_mergeProperty( string $property , array $parentClasses , array $options )
Merge a single property with the values declared in all parent classes.
Parameters
- string $property
- The name of the property being merged.
- array $parentClasses
- An array of classes you want to merge with.
- array $options
- Options for merging the property, see _mergeVars()
_mergePropertyData() protected ¶
_mergePropertyData( array $current , array $parent , boolean $isAssoc )
Merge each of the keys in a property together.
Parameters
- array $current
- The current merged value.
- array $parent
- The parent class' value.
- boolean $isAssoc
- Whether or not the merging should be done in associative mode.
Returns
The updated value.
_mergeVars() protected ¶
_mergeVars( array $properties , array $options [] )
Merge the list of $properties with all parent classes of the current class.
Options:
associative
- A list of properties that should be treated as associative arrays. Properties in this list will be passed through Hash::normalize() before merging.
Parameters
- array $properties
- An array of properties and the merge strategy for them.
- array $options optional []
- The options to use when merging properties.
Methods used from Cake\Datasource\ModelAwareTrait
_setModelClass() protected ¶
_setModelClass( string $name )
Set the modelClass and modelKey properties based on conventions.
If the properties are already set they will not be overwritten
Parameters
- string $name
- Class name.
loadModel() public ¶
loadModel( string|null $modelClass null , string|null $modelType null )
Loads and constructs repository objects required by this object
Typically used to load ORM Table objects as required. Can also be used to load other types of repository objects your application uses.
If a repository provider does not return an object a MissingModelException will be thrown.
Parameters
- string|null $modelClass optional null
- Name of model class to load. Defaults to $this->modelClass
- string|null $modelType optional null
- The type of repository to load. Defaults to the modelType() value.
Returns
Throws
Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
InvalidArgumentException
When using a type that has not been registered.
UnexpectedValueException
If no model type has been defined
modelFactory() public ¶
modelFactory( string $type , callable $factory )
Override a existing callable to generate repositories of a given type.
Parameters
- string $type
- The name of the repository type the factory function is for.
- callable $factory
- The factory function used to create instances.
modelType() public ¶
modelType( string|null $modelType null )
Set or get the model type to be used by this class
Deprecated
Parameters
- string|null $modelType optional null
- The model type or null to retrieve the current
Returns
setModelType() public ¶
setModelType( string $modelType )
Set the model type to be used by this class
Parameters
- string $modelType
- The model type
Returns
$this
Properties detail
$plugin ¶
The name of the plugin the shell belongs to. Is automatically set by ShellDispatcher when a shell is constructed.