/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/src
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/src/Plugin.php (4906B)
addPlugin('Cake/TwigView');
}
/**
* Define the console commands for an application.
*
* @param \Cake\Console\CommandCollection $commands The CommandCollection to add commands into.
* @return \Cake\Console\CommandCollection The updated collection.
*/
public function console(CommandCollection $commands): CommandCollection
{
// Add commands in plugins and app.
$commands = $this->discoverCommands($commands);
// Add entry command to handle entry point and backwards compat.
$commands->add(EntryCommand::defaultName(), EntryCommand::class);
return $commands;
}
/**
* Scan plugins and application to find commands that are intended
* to be used with bake.
*
* Non-Abstract commands extending `Bake\Command\BakeCommand` are included.
* Plugins are scanned in the order they are listed in `Plugin::loaded()`
*
* @param \Cake\Console\CommandCollection $commands The CommandCollection to add commands into.
* @return \Cake\Console\CommandCollection The updated collection.
*/
protected function discoverCommands(CommandCollection $commands): CommandCollection
{
foreach (CorePlugin::getCollection()->with('console') as $plugin) {
$namespace = str_replace('/', '\\', $plugin->getName());
$pluginPath = $plugin->getClassPath();
$found = $this->findInPath($namespace, $pluginPath);
if (count($found)) {
$commands->addMany($found);
}
}
$found = $this->findInPath(Configure::read('App.namespace'), APP);
if (count($found)) {
$commands->addMany($found);
}
return $commands;
}
/**
* Search a path for commands.
*
* @param string $namespace The namespace classes are expected to be in.
* @param string $path The path to look in.
* @return string[]
* @psalm-return array
>
*/
protected function findInPath(string $namespace, string $path): array
{
$hasSubfolder = false;
$path .= 'Command/';
$namespace .= '\Command\\';
if (file_exists($path . 'Bake/')) {
$hasSubfolder = true;
$path .= 'Bake/';
$namespace .= 'Bake\\';
} elseif (!file_exists($path)) {
return [];
}
$iterator = new DirectoryIterator($path);
$candidates = [];
foreach ($iterator as $item) {
if ($item->isDot() || $item->isDir()) {
continue;
}
/** @psalm-var class-string<\Bake\Command\BakeCommand> $class */
$class = $namespace . $item->getBasename('.php');
if (!$hasSubfolder) {
try {
$reflection = new ReflectionClass($class);
/** @phpstan-ignore-next-line */
} catch (ReflectionException $e) {
continue;
}
if (!$reflection->isInstantiable() || !$reflection->isSubclassOf(BakeCommand::class)) {
continue;
}
}
$candidates[$class::defaultName()] = $class;
}
return $candidates;
}
}