<?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @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;
+use Friendica\App;
+
/**
* Description of Console
- *
- * @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class Console extends \Asika\SimpleConsole\Console
{
protected $helpOptions = [];
protected $customHelpOptions = ['h', 'help', '?'];
+ /**
+ * @var Dice The DI library
+ */
+ protected $dice;
+
protected function getHelp()
{
$help = <<<HELP
Usage: bin/console [--version] [-h|--help|-?] <command> [<args>] [-v]
Commands:
+ addon Addon management
cache Manage node cache
config Edit site config
+ contact Contact management
createdoxygen Generate Doxygen headers
dbstructure Do database updates
docbloxerrorchecker Check the file tree for DocBlox errors
extract Generate translation string file for the Friendica project (deprecated)
globalcommunityblock Block remote profile from interacting with this node
- globalcommunitysilence Silence remote profile from global community page
+ globalcommunitysilence Silence a profile from the global community page
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
+ movetoavatarcache Move cached avatars to the file based avatar cache
+ mergecontacts Merge duplicated contact entries
+ 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)
+ relocate Update node base URL
serverblock Manage blocked servers
storage Manage storage backend
+ relay Manage ActivityPub relay servers
Options:
-h|--help|-? Show help information
}
protected $subConsoles = [
- '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',
- 'serverblock' => __NAMESPACE__ . '\Console\ServerBlock',
- 'storage' => __NAMESPACE__ . '\Console\Storage',
+ 'addon' => Friendica\Console\Addon::class,
+ 'archivecontact' => Friendica\Console\ArchiveContact::class,
+ 'autoinstall' => Friendica\Console\AutomaticInstallation::class,
+ 'cache' => Friendica\Console\Cache::class,
+ 'config' => Friendica\Console\Config::class,
+ 'contact' => Friendica\Console\Contact::class,
+ 'createdoxygen' => Friendica\Console\CreateDoxygen::class,
+ 'docbloxerrorchecker' => Friendica\Console\DocBloxErrorChecker::class,
+ 'dbstructure' => Friendica\Console\DatabaseStructure::class,
+ 'extract' => Friendica\Console\Extract::class,
+ 'fixapdeliveryworkertaskparameters' => Friendica\Console\FixAPDeliveryWorkerTaskParameters::class,
+ 'globalcommunityblock' => Friendica\Console\GlobalCommunityBlock::class,
+ 'globalcommunitysilence' => Friendica\Console\GlobalCommunitySilence::class,
+ 'lock' => Friendica\Console\Lock::class,
+ 'maintenance' => Friendica\Console\Maintenance::class,
+ 'mergecontacts' => Friendica\Console\MergeContacts::class,
+ 'movetoavatarcache' => Friendica\Console\MoveToAvatarCache::class,
+ 'php2po' => Friendica\Console\PhpToPo::class,
+ 'postupdate' => Friendica\Console\PostUpdate::class,
+ 'po2php' => Friendica\Console\PoToPhp::class,
+ 'relay' => Friendica\Console\Relay::class,
+ 'relocate' => Friendica\Console\Relocate::class,
+ 'serverblock' => Friendica\Console\ServerBlock::class,
+ 'storage' => Friendica\Console\Storage::class,
+ 'test' => Friendica\Console\Test::class,
+ 'typo' => Friendica\Console\Typo::class,
+ 'user' => Friendica\Console\User::class,
];
- protected function doExecute()
+ /**
+ * 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(): int
{
if ($this->getOption('v')) {
$this->out('Executable: ' . $this->executable);
$command = null;
if ($this->getOption('version')) {
- $this->out('Friendica Console version ' . FRIENDICA_VERSION);
+ $this->out('Friendica Console version ' . App::VERSION);
return 0;
} elseif ((count($this->options) === 0 || $this->getOption($this->customHelpOptions) === true || $this->getOption($this->customHelpOptions) === 1) && count($this->args) === 0
$className = $this->subConsoles[$command];
+ Friendica\DI::init($this->dice);
+
+ Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
+
/** @var Console $subconsole */
- $subconsole = new $className($subargs);
+ $subconsole = $this->dice->create($className, [$subargs]);
foreach ($this->options as $name => $value) {
$subconsole->setOption($name, $value);