]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console.php
Merge remote-tracking branch 'upstream/develop' into search
[friendica.git] / src / Core / Console.php
index eb6e08057aa24ac94374dcccea321d55b1f17fd1..fefe02999459c91684e9ea45243934f792160b3e 100644 (file)
@@ -1,11 +1,32 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2023, 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 <mrpetovan@gmail.com>
  */
 class Console extends \Asika\SimpleConsole\Console
 {
@@ -13,19 +34,10 @@ class Console extends \Asika\SimpleConsole\Console
        protected $helpOptions = [];
        protected $customHelpOptions = ['h', 'help', '?'];
 
-       protected $subConsoles = [
-               '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',
-               'maintenance'            => __NAMESPACE__ . '\Console\Maintenance',
-               'php2po'                 => __NAMESPACE__ . '\Console\PhpToPo',
-               'po2php'                 => __NAMESPACE__ . '\Console\PoToPhp',
-               'typo'                   => __NAMESPACE__ . '\Console\Typo',
-       ];
+       /**
+        * @var Dice The DI library
+        */
+       protected $dice;
 
        protected function getHelp()
        {
@@ -33,18 +45,32 @@ class Console extends \Asika\SimpleConsole\Console
 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
+       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
@@ -53,7 +79,50 @@ HELP;
                return $help;
        }
 
-       protected function doExecute()
+       protected $subConsoles = [
+               '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,
+       ];
+
+       /**
+        * 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);
@@ -61,17 +130,15 @@ HELP;
                        $this->out('Options: ' . var_export($this->options, true));
                }
 
-               $showHelp = false;
                $subHelp = false;
                $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
                ) {
-                       $showHelp = true;
                } elseif (count($this->args) >= 2 && $this->getArgument(0) == 'help') {
                        $command = $this->getArgument(1);
                        $subHelp = true;
@@ -111,7 +178,12 @@ HELP;
 
                $className = $this->subConsoles[$command];
 
-               $subconsole = new $className($subargs);
+               Friendica\DI::init($this->dice);
+
+               Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
+
+               /** @var Console $subconsole */
+               $subconsole = $this->dice->create($className, [$subargs]);
 
                foreach ($this->options as $name => $value) {
                        $subconsole->setOption($name, $value);