/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/src/Command
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/src/Command/EntryCommand.php (7416B)
commands = $commands;
}
/**
* Run the command.
*
* Override the run() method so that we can splice in dynamic
* subcommand handling for legacy tasks.
*
* @param array $argv Arguments from the CLI environment.
* @param \Cake\Console\ConsoleIo $io The console io
* @return int|null Exit code or null for success.
*/
public function run(array $argv, ConsoleIo $io): ?int
{
$this->initialize();
$parser = $this->getOptionParser();
try {
[$options, $arguments] = $parser->parse($argv);
$args = new Arguments(
$arguments,
$options,
$parser->argumentNames()
);
} catch (ConsoleException $e) {
$io->err('Error: ' . $e->getMessage());
return static::CODE_ERROR;
}
$this->setOutputLevel($args, $io);
// This is the variance from Command::run()
if (!$args->getArgumentAt(0) && $args->getOption('help')) {
$this->executeCommand($this->help, [], $io);
return static::CODE_SUCCESS;
}
return $this->execute($args, $io);
}
/**
* Execute the command.
*
* This command acts as a catch-all for legacy tasks that may
* be defined in the application or plugins.
*
* @param \Cake\Console\Arguments $args The command arguments.
* @param \Cake\Console\ConsoleIo $io The console io
* @return int|null The exit code or null for success
*/
public function execute(Arguments $args, ConsoleIo $io): ?int
{
if ($args->hasArgumentAt(0)) {
$name = $args->getArgumentAt(0);
$task = $this->createTask($name, $io);
if ($task) {
$argList = $args->getArguments();
// Remove command name.
array_shift($argList);
foreach ($args->getOptions() as $key => $value) {
if ($value === false) {
continue;
} elseif ($value === true) {
$argList[] = '--' . $key;
} else {
$argList[] = '--' . $key;
$argList[] = $value;
}
}
$result = $task->runCommand($argList);
if ($result === false) {
return static::CODE_ERROR;
}
if ($result === true) {
return static::CODE_SUCCESS;
}
return $result;
}
$io->err("
Could not find a task named `{$name}`.");
return static::CODE_ERROR;
}
$io->err('
No command provided. Run `bake --help` to get a list of commands.');
return static::CODE_ERROR;
}
/**
* Find and create a Shell based BakeTask
*
* @param string $name The task name.
* @param \Cake\Console\ConsoleIo $io The console io.
* @return \Cake\Console\Shell|null
*/
protected function createTask(string $name, ConsoleIo $io): ?Shell
{
$found = false;
$name = Inflector::camelize($name);
$factory = function ($className, $io) {
$task = new $className($io);
$task->setRootName('cake bake');
return $task;
};
// Look in each plugin for the requested task
foreach (CorePlugin::loaded() as $plugin) {
$namespace = str_replace('/', '\\', $plugin);
$candidate = $namespace . '\Shell\Task\\' . $name . 'Task';
if (class_exists($candidate) && is_subclass_of($candidate, BakeTask::class)) {
return $factory($candidate, $io);
}
}
// Try the app as well
$namespace = Configure::read('App.namespace');
$candidate = $namespace . '\Shell\Task\\' . $name . 'Task';
if (class_exists($candidate) && is_subclass_of($candidate, BakeTask::class)) {
return $factory($candidate, $io);
}
return null;
}
/**
* Gets the option parser instance and configures it.
*
* @param \Cake\Console\ConsoleOptionParser $parser The console option parser
* @return \Cake\Console\ConsoleOptionParser
*/
public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser
{
$this->help = new HelpCommand();
/** @psalm-suppress InaccessibleMethod Protected methods as class based */
$parser = $this->help->buildOptionParser($parser);
$parser
->setDescription(
'Bake generates code for your application. Different types of classes can be generated' .
' with the subcommands listed below. For example run
bake controller --help' .
' to learn more about generating a controller.'
)
->setEpilog('Older Shell based tasks will not be listed here, but can still be run.');
$commands = [];
foreach ($this->commands as $command => $class) {
if (substr($command, 0, 4) === 'bake') {
$parts = explode(' ', $command);
// Remove `bake`
array_shift($parts);
if (count($parts) === 0) {
continue;
}
$commands[$command] = $class;
}
}
$CommandCollection = new CommandCollection($commands);
$this->help->setCommandCollection($CommandCollection);
return $parser;
}
}