<?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
namespace Friendica\Core;
+use Dice\Dice;
+use Friendica;
+
/**
* Description of Console
- *
- * @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class Console extends \Asika\SimpleConsole\Console
{
protected $helpOptions = [];
protected $customHelpOptions = ['h', 'help', '?'];
- protected $subConsoles = [
- 'blockedservers' => __NAMESPACE__ . '\Console\BlockedServers',
- 'cache' => __NAMESPACE__ . '\Console\Cache',
- 'config' => __NAMESPACE__ . '\Console\Config',
- 'createdoxygen' => __NAMESPACE__ . '\Console\CreateDoxygen',
- 'docbloxerrorchecker' => __NAMESPACE__ . '\Console\DocBloxErrorChecker',
- 'dbstructure' => __NAMESPACE__ . '\Console\DatabaseStructure',
- 'extract' => __NAMESPACE__ . '\Console\Extract',
- 'globalcommunityblock' => __NAMESPACE__ . '\Console\GlobalCommunityBlock',
- 'globalcommunitysilence' => __NAMESPACE__ . '\Console\GlobalCommunitySilence',
- 'archivecontact' => __NAMESPACE__ . '\Console\ArchiveContact',
- 'autoinstall' => __NAMESPACE__ . '\Console\AutomaticInstallation',
- 'maintenance' => __NAMESPACE__ . '\Console\Maintenance',
- 'newpassword' => __NAMESPACE__ . '\Console\NewPassword',
- 'php2po' => __NAMESPACE__ . '\Console\PhpToPo',
- 'po2php' => __NAMESPACE__ . '\Console\PoToPhp',
- 'typo' => __NAMESPACE__ . '\Console\Typo',
- 'postupdate' => __NAMESPACE__ . '\Console\PostUpdate',
- 'storage' => __NAMESPACE__ . '\Console\Storage',
- ];
+ /**
+ * @var Dice The DI library
+ */
+ protected $dice;
protected function getHelp()
{
Usage: bin/console [--version] [-h|--help|-?] <command> [<args>] [-v]
Commands:
- blockedservers Manage blocked servers
cache Manage node cache
config Edit site config
createdoxygen Generate Doxygen headers
archivecontact Archive a contact when you know that it isn't existing anymore
help Show help about a command, e.g (bin/console help config)
autoinstall Starts automatic installation of friendica based on values from htconfig.php
+ lock Edit site locks
maintenance Set maintenance mode for this node
- newpassword Set a new password for a given user
+ user User management
php2po Generate a messages.po file from a strings.php file
po2php Generate a strings.php file from a messages.po file
typo Checks for parse errors in Friendica files
postupdate Execute pending post update scripts (can last days)
+ serverblock Manage blocked servers
storage Manage storage backend
Options:
return $help;
}
+ protected $subConsoles = [
+ 'cache' => Friendica\Console\Cache::class,
+ 'config' => Friendica\Console\Config::class,
+ 'createdoxygen' => Friendica\Console\CreateDoxygen::class,
+ 'docbloxerrorchecker' => Friendica\Console\DocBloxErrorChecker::class,
+ 'dbstructure' => Friendica\Console\DatabaseStructure::class,
+ 'extract' => Friendica\Console\Extract::class,
+ 'globalcommunityblock' => Friendica\Console\GlobalCommunityBlock::class,
+ 'globalcommunitysilence' => Friendica\Console\GlobalCommunitySilence::class,
+ 'archivecontact' => Friendica\Console\ArchiveContact::class,
+ 'autoinstall' => Friendica\Console\AutomaticInstallation::class,
+ 'lock' => Friendica\Console\Lock::class,
+ 'maintenance' => Friendica\Console\Maintenance::class,
+ 'user' => Friendica\Console\User::class,
+ 'php2po' => Friendica\Console\PhpToPo::class,
+ 'po2php' => Friendica\Console\PoToPhp::class,
+ 'typo' => Friendica\Console\Typo::class,
+ 'postupdate' => Friendica\Console\PostUpdate::class,
+ 'serverblock' => Friendica\Console\ServerBlock::class,
+ 'storage' => Friendica\Console\Storage::class,
+ ];
+
+ /**
+ * CliInput Friendica constructor.
+ *
+ * @param Dice $dice The DI library
+ * @param array $argv
+ */
+ public function __construct(Dice $dice, array $argv = null)
+ {
+ parent::__construct($argv);
+
+ $this->dice = $dice;
+ }
+
protected function doExecute()
{
if ($this->getOption('v')) {
$className = $this->subConsoles[$command];
+ Friendica\DI::init($this->dice);
+
/** @var Console $subconsole */
- $subconsole = new $className($subargs);
+ $subconsole = $this->dice->create($className, [$subargs]);
foreach ($this->options as $name => $value) {
$subconsole->setOption($name, $value);