3 namespace Friendica\Core;
6 * Description of Console
8 * @author Hypolite Petovan <mrpetovan@gmail.com>
10 class Console extends \Asika\SimpleConsole\Console
12 // Disables the default help handling
13 protected $helpOptions = [];
14 protected $customHelpOptions = ['h', 'help', '?'];
16 protected $subConsoles = [
17 'config' => __NAMESPACE__ . '\Console\Config',
18 'createdoxygen' => __NAMESPACE__ . '\Console\CreateDoxygen',
19 'docbloxerrorchecker' => __NAMESPACE__ . '\Console\DocBloxErrorChecker',
20 'dbstructure' => __NAMESPACE__ . '\Console\DatabaseStructure',
21 'extract' => __NAMESPACE__ . '\Console\Extract',
22 'globalcommunityblock' => __NAMESPACE__ . '\Console\GlobalCommunityBlock',
23 'globalcommunitysilence' => __NAMESPACE__ . '\Console\GlobalCommunitySilence',
24 'autoinstall' => __NAMESPACE__ . '\Console\AutomaticInstallation',
25 'maintenance' => __NAMESPACE__ . '\Console\Maintenance',
26 'newpassword' => __NAMESPACE__ . '\Console\NewPassword',
27 'php2po' => __NAMESPACE__ . '\Console\PhpToPo',
28 'po2php' => __NAMESPACE__ . '\Console\PoToPhp',
29 'typo' => __NAMESPACE__ . '\Console\Typo',
32 protected function getHelp()
35 Usage: bin/console [--version] [-h|--help|-?] <command> [<args>] [-v]
38 config Edit site config
39 createdoxygen Generate Doxygen headers
40 dbstructure Do database updates
41 docbloxerrorchecker Check the file tree for DocBlox errors
42 extract Generate translation string file for the Friendica project (deprecated)
43 globalcommunityblock Block remote profile from interacting with this node
44 globalcommunitysilence Silence remote profile from global community page
45 help Show help about a command, e.g (bin/console help config)
46 autoinstall Starts automatic installation of friendica based on values from htconfig.php
47 maintenance Set maintenance mode for this node
48 newpassword Set a new password for a given user
49 php2po Generate a messages.po file from a strings.php file
50 po2php Generate a strings.php file from a messages.po file
51 typo Checks for parse errors in Friendica files
54 -h|--help|-? Show help information
55 -v Show more debug information.
60 protected function doExecute()
62 if ($this->getOption('v')) {
63 $this->out('Executable: ' . $this->executable);
64 $this->out('Arguments: ' . var_export($this->args, true));
65 $this->out('Options: ' . var_export($this->options, true));
72 if ($this->getOption('version')) {
73 $this->out('Friendica Console version ' . FRIENDICA_VERSION);
76 } elseif ((count($this->options) === 0 || $this->getOption($this->customHelpOptions) === true || $this->getOption($this->customHelpOptions) === 1) && count($this->args) === 0
79 } elseif (count($this->args) >= 2 && $this->getArgument(0) == 'help') {
80 $command = $this->getArgument(1);
82 array_shift($this->args);
83 array_shift($this->args);
84 } elseif (count($this->args) >= 1) {
85 $command = $this->getArgument(0);
86 array_shift($this->args);
89 if (is_null($command)) {
90 $this->out($this->getHelp());
94 $console = $this->getSubConsole($command);
97 $console->setOption($this->customHelpOptions, true);
100 return $console->execute();
103 private function getSubConsole($command)
105 if ($this->getOption('v')) {
106 $this->out('Command: ' . $command);
109 if (!isset($this->subConsoles[$command])) {
110 throw new \Asika\SimpleConsole\CommandArgsException('Command ' . $command . ' doesn\'t exist');
113 $subargs = $this->args;
114 array_unshift($subargs, $this->executable);
116 $className = $this->subConsoles[$command];
118 $subconsole = new $className($subargs);
120 foreach ($this->options as $name => $value) {
121 $subconsole->setOption($name, $value);