Base class for command-line utilities for automating programmer chores.
Is the equivalent of Cake\Controller\Controller on the command line.
int
1
int
0
int
\Cake\Console\ConsoleIo::NORMAL
int
\Cake\Console\ConsoleIo::QUIET
int
\Cake\Console\ConsoleIo::VERBOSE
\Cake\Console\ConsoleOptionParser
An instance of ConsoleOptionParser that has been configured for this class.
\Cake\Console\TaskRegistry
Task Collection for the command, used to create Tasks.
\Cake\Console\ConsoleIo
ConsoleIo instance.
(callable|\Cake\Datasource\Locator\LocatorInterface)[]
A list of overridden model factory functions.
string
The model type to use.
\Cake\ORM\Locator\LocatorInterface|null
Table locator instance
array
Normalized map of tasks.
array
Contains arguments parsed from the command line.
string|null
The command (method/task) that is being run.
bool
If true, the script will ask for permission to perform actions.
string|null
This object's primary model class name. Should be a plural form.
string
The name of the shell in camelized.
array
Contains command switches parsed from the command line.
string
The name of the plugin the shell belongs to.
string
The root command name used when generating help output.
array
Contains the loaded tasks
array|bool
Contains tasks to load and instantiate
Returns an array that can be used to describe the internal state of this object.
Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.
Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.
Outputs a series of minus characters to the standard output, acts as a visual separator.
Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution
Convenience method to write a message to Log. See Log::write() for more information on writing to logs.
Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.
__construct(?\Cake\Console\ConsoleIo $io, ?\Cake\ORM\Locator\LocatorInterface $locator)
Constructs this Shell instance.
\Cake\Console\ConsoleIo|null
$io optional An io instance.
\Cake\ORM\Locator\LocatorInterface|null
$locator optional Table locator instance.
__debugInfo()
Returns an array that can be used to describe the internal state of this object.
array
__get(string $name)
Overload get for lazy building of tasks
string
$name The task to get.
\Cake\Console\Shell
Object of Task
_displayHelp(?string $command)
Display the help in the correct format
string|null
$command optional The command to get help for.
int|null
The number of bytes returned from writing to stdout.
_mergeProperty(string $property, array $parentClasses, array $options)
Merge a single property with the values declared in all parent classes.
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(array $current, array $parent, bool $isAssoc)
Merge each of the keys in a property together.
array
$current The current merged value.
array
$parent The parent class' value.
bool
$isAssoc Whether or not the merging should be done in associative mode.
mixed
The updated value.
_mergeVars(array $properties, array $options)
Merge the list of $properties with all parent classes of the current class.
associative
- A list of properties that should be treated as associative arrays. Properties in this list will be passed through Hash::normalize() before merging.string[]
$properties An array of properties and the merge strategy for them.
array
$options optional The options to use when merging properties.
_setModelClass(string $name)
Set the modelClass property based on conventions.
If the property is already set it will not be overwritten
string
$name Class name.
_setOutputLevel()
Set the output level based on the parameters.
This reconfigures both the output level for out() and the configured stdout/stderr logging
_stop(int $status)
Stop execution of the current script.
Raises a StopException to try and halt the execution.
int
$status optional see https://secure.php.net/exit for values
Cake\Console\Exception\StopException
_validateTasks()
Checks that the tasks in the task map are actually available
RuntimeException
_welcome()
Displays a header for the shell
abort(string $message, int $exitCode)
Displays a formatted error message and exits the application with an error code.
string
$message The error message
int
$exitCode optional The exit code for the shell task.
Cake\Console\Exception\StopException
clear()
createFile(string $path, string $contents)
Creates a file at given path
string
$path Where to put the file.
string
$contents Content to put in the file.
bool
Success
dispatchShell()
Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.
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 dispatchextra
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'] ]);
int
The CLI command exit code. 0 is success.
err(mixed $message, int $newlines)
Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int
The number of bytes returned from writing to stderr.
getIo()
Get the io object for this shell.
\Cake\Console\ConsoleIo
The current ConsoleIo object.
getModelType()
Get the model type to be used by this class
string
getOptionParser()
Gets the option parser instance and configures it.
By overriding this method you can configure the ConsoleOptionParser before returning it.
\Cake\Console\ConsoleOptionParser
getTableLocator()
Gets the table locator.
\Cake\ORM\Locator\LocatorInterface
hasMethod(string $name)
Check to see if this shell has a callable method by the given name.
string
$name The method name to check.
bool
hasTask(string $task)
Check to see if this shell has a task with the provided name.
string
$task The task name to check.
bool
Success
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.
string
$name The name of the helper to render
array
$settings optional Configuration data for the helper.
\Cake\Console\Helper
The created helper instance.
hr(int $newlines, int $width)
Outputs a series of minus characters to the standard output, acts as a visual separator.
int
$newlines optional Number of newlines to pre- and append
int
$width optional Width of the line, defaults to 63
in(string $prompt, mixed $options, ?string $default)
Prompts the user for input, and returns it.
string
$prompt Prompt text.
string|array|null
$options optional Array or string of options.
string|null
$default optional Default input value.
string|null
Either the default value, or the user-provided input.
info(mixed $message, int $newlines, int $level)
Convenience method for out() that wraps message between tag
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int
$level optional The message's output level, see above.
int|null
The number of bytes returned from writing to stdout.
initialize()
Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution
loadModel(?string $modelClass, ?string $modelType)
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.
string|null
$modelClass optional Name of model class to load. Defaults to $this->modelClass. The name can be an alias like 'Post'
or FQCN like App\Model\Table\PostsTable::class
.
string|null
$modelType optional The type of repository to load. Defaults to the getModelType() value.
\Cake\Datasource\RepositoryInterface
The model instance created.
Cake\Datasource\Exception\MissingModelException
UnexpectedValueException
loadTasks()
Loads tasks defined in public $tasks
true
log(string $message, mixed $level, mixed $context)
Convenience method to write a message to Log. See Log::write() for more information on writing to logs.
string
$message Log message.
int|string
$level optional Error level.
string|array
$context optional Additional log data relevant to this message.
bool
Success of log write.
main(mixed $args)
Main entry method for the shell.
mixed
$args modelFactory(string $type, mixed $factory)
Override a existing callable to generate repositories of a given type.
string
$type The name of the repository type the factory function is for.
callable|\Cake\Datasource\Locator\LocatorInterface
$factory The factory function used to create instances.
nl(int $multiplier)
Returns a single or multiple linefeeds sequences.
int
$multiplier optional Number of times the linefeed sequence should be repeated
string
out(mixed $message, int $newlines, int $level)
Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.
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.
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int
$level optional The message's output level, see above.
int|null
The number of bytes returned from writing to stdout.
param(string $name)
Safely access the values in $this->params.
string
$name The name of the parameter to get.
string|bool|null
Value. Will return null if it doesn't exist.
parseDispatchArguments(array $args)
Parses the arguments for the dispatchShell() method.
array
$args Arguments fetch from the dispatchShell() method with func_get_args()
array
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(mixed $message, int $newlines)
Output at all levels.
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int|null
The number of bytes returned from writing to stdout.
runCommand(array $argv, bool $autoMethod, 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:
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.
array
$argv Array of arguments to run the shell with. This array should be missing the shell name.
bool
$autoMethod optional 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 displayedint|bool|null
setIo(\Cake\Console\ConsoleIo $io)
Set the io object for this shell.
\Cake\Console\ConsoleIo
$io The ConsoleIo object to use.
setModelType(string $modelType)
Set the model type to be used by this class
string
$modelType The model type
$this
setRootName(string $name)
Set the root command name for help output.
string
$name The name of the root command.
$this
setTableLocator(\Cake\ORM\Locator\LocatorInterface $tableLocator)
Sets the table locator.
\Cake\ORM\Locator\LocatorInterface
$tableLocator LocatorInterface instance.
$this
shortPath(string $file)
Makes absolute file path easier to read
string
$file Absolute file path
string
short path
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.
success(mixed $message, int $newlines, int $level)
Convenience method for out() that wraps message between tag
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int
$level optional The message's output level, see above.
int|null
The number of bytes returned from writing to stdout.
verbose(mixed $message, int $newlines)
Output at the verbose level.
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int|null
The number of bytes returned from writing to stdout.
warn(mixed $message, int $newlines)
Convenience method for err() that wraps message between tag
string|string[]
$message A string or an array of strings to output
int
$newlines optional Number of newlines to append
int
The number of bytes returned from writing to stderr.
wrapText(string $text, mixed $options)
Wrap a block of text.
Allows you to set the width, and indenting on a block of text.
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.string
$text Text the text to format.
int|array
$options optional Array of options to use, or an integer to wrap the text to.
string
Wrapped / indented text
An instance of ConsoleOptionParser that has been configured for this class.
\Cake\Console\ConsoleOptionParser
Task Collection for the command, used to create Tasks.
\Cake\Console\TaskRegistry
ConsoleIo instance.
\Cake\Console\ConsoleIo
A list of overridden model factory functions.
(callable|\Cake\Datasource\Locator\LocatorInterface)[]
The model type to use.
string
Table locator instance
\Cake\ORM\Locator\LocatorInterface|null
Normalized map of tasks.
array
Contains arguments parsed from the command line.
array
The command (method/task) that is being run.
string|null
If true, the script will ask for permission to perform actions.
bool
This object's primary model class name. Should be a plural form.
CakePHP will not inflect the name.
Example: For an object named 'Comments', the modelClass would be 'Comments'. Plugin classes should use Plugin.Comments
style names to correctly load models from the correct plugin.
Use empty string to not use auto-loading on this object. Null auto-detects based on controller name.
string|null
The name of the shell in camelized.
string
Contains command switches parsed from the command line.
array
The name of the plugin the shell belongs to.
Is automatically set by ShellDispatcher when a shell is constructed.
string
The root command name used when generating help output.
string
Contains the loaded tasks
array
Contains tasks to load and instantiate
array|bool
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.Console.Shell.html