public function register(Application $app) { $app['nut'] = $app->share(function ($app) { $console = new NutApplication(); $console->setName('Bolt console tool - Nut'); if ($app instanceof \Bolt\Application) { $console->setVersion($app->getVersion()); } $console->addCommands($app['nut.commands']); return $console; }); $app['nut.commands'] = $app->share(function ($app) { return [new Nut\CronRunner($app), new Nut\CacheClear($app), new Nut\Info($app), new Nut\LogTrim($app), new Nut\LogClear($app), new Nut\DatabaseCheck($app), new Nut\DatabaseExport($app), new Nut\DatabaseImport($app), new Nut\DatabasePrefill($app), new Nut\DatabaseRepair($app), new Nut\TestRunner($app), new Nut\ConfigGet($app), new Nut\ConfigSet($app), new Nut\Extensions($app), new Nut\ExtensionsEnable($app), new Nut\ExtensionsDisable($app), new Nut\UserAdd($app), new Nut\UserResetPassword($app), new Nut\UserRoleAdd($app), new Nut\UserRoleRemove($app)]; }); $app['nut.commands.add'] = $app->protect(function (Command $command) use($app) { $app['nut.commands'] = $app->share($app->extend('nut.commands', function ($commands) use($command) { $commands[] = $command; return $commands; })); }); // Maintain backwards compatibility $app['console'] = $app->share(function ($app) { return $app['nut']; }); }
public function register(Application $app) { $app['nut'] = $app->share(function ($app) { $console = new NutApplication(); $console->setName('Bolt console tool - Nut'); if (isset($app['bolt_long_version'])) { $console->setVersion($app['bolt_long_version']); } $console->addCommands($app['nut.commands']); return $console; }); $app['nut.commands'] = $app->share(function ($app) { return array(new Nut\CronRunner($app), new Nut\CacheClear($app), new Nut\Info($app), new Nut\LogTrim($app), new Nut\LogClear($app), new Nut\DatabaseCheck($app), new Nut\DatabaseExport($app), new Nut\DatabaseImport($app), new Nut\DatabasePrefill($app), new Nut\DatabaseRepair($app), new Nut\TestRunner($app), new Nut\ConfigGet($app), new Nut\ConfigSet($app), new Nut\Extensions($app), new Nut\ExtensionsAutoloader($app), new Nut\ExtensionsEnable($app), new Nut\ExtensionsDisable($app), new Nut\UserAdd($app), new Nut\UserRoleAdd($app), new Nut\UserRoleRemove($app)); }); /** * This is a shortcut to add commands to nut lazily. * * Add a single command: * * $app['nut.commands.add'](function ($app) { * return new Command1($app); * }); * * Or add multiple commands: * * $app['nut.commands.add'](function ($app) { * return [ * new Command1($app), * new Command2($app), * ]; * }); * * Commands can also be passed in directly. However, * this is NOT recommended because commands are created * even when they are not used, e.g. web requests. * * $app['nut.commands.add'](new Command1($app)); */ $app['nut.commands.add'] = $app->protect(function ($commandsToAdd) use($app) { $app['nut.commands'] = $app->share($app->extend('nut.commands', function ($existingCommands, $app) use($commandsToAdd) { if (is_callable($commandsToAdd)) { $commandsToAdd = $commandsToAdd($app); } $commandsToAdd = is_array($commandsToAdd) ? $commandsToAdd : array($commandsToAdd); foreach ($commandsToAdd as $command) { if (!$command instanceof Command) { throw new LogicException('Nut commands must be instances of \\Symfony\\Component\\Console\\Command\\Command'); } $existingCommands[] = $command; } return $existingCommands; })); }); // Maintain backwards compatibility $app['console'] = $app->share(function ($app) { return $app['nut']; }); }