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 'maintenance' => __NAMESPACE__ . '\Console\Maintenance',
25 'newpassword' => __NAMESPACE__ . '\Console\NewPassword',
26 'php2po' => __NAMESPACE__ . '\Console\PhpToPo',
27 'po2php' => __NAMESPACE__ . '\Console\PoToPhp',
28 'typo' => __NAMESPACE__ . '\Console\Typo',
31 protected function getHelp()
34 Usage: bin/console [--version] [-h|--help|-?] <command> [<args>] [-v]
37 config Edit site config
38 createdoxygen Generate Doxygen headers
39 dbstructure Do database updates
40 docbloxerrorchecker Check the file tree for DocBlox errors
41 extract Generate translation string file for the Friendica project (deprecated)
42 globalcommunityblock Block remote profile from interacting with this node
43 globalcommunitysilence Silence remote profile from global community page
44 help Show help about a command, e.g (bin/console help config)
45 maintenance Set maintenance mode for this node
46 newpassword Set a new password for a given user
47 php2po Generate a messages.po file from a strings.php file
48 po2php Generate a strings.php file from a messages.po file
49 typo Checks for parse errors in Friendica files
52 -h|--help|-? Show help information
53 -v Show more debug information.
58 protected function doExecute()
60 if ($this->getOption('v')) {
61 $this->out('Executable: ' . $this->executable);
62 $this->out('Arguments: ' . var_export($this->args, true));
63 $this->out('Options: ' . var_export($this->options, true));
70 if ($this->getOption('version')) {
71 $this->out('Friendica Console version ' . FRIENDICA_VERSION);
74 } elseif ((count($this->options) === 0 || $this->getOption($this->customHelpOptions) === true || $this->getOption($this->customHelpOptions) === 1) && count($this->args) === 0
77 } elseif (count($this->args) >= 2 && $this->getArgument(0) == 'help') {
78 $command = $this->getArgument(1);
80 array_shift($this->args);
81 array_shift($this->args);
82 } elseif (count($this->args) >= 1) {
83 $command = $this->getArgument(0);
84 array_shift($this->args);
87 if (is_null($command)) {
88 $this->out($this->getHelp());
92 $console = $this->getSubConsole($command);
95 $console->setOption($this->customHelpOptions, true);
98 return $console->execute();
101 private function getSubConsole($command)
103 if ($this->getOption('v')) {
104 $this->out('Command: ' . $command);
107 if (!isset($this->subConsoles[$command])) {
108 throw new \Asika\SimpleConsole\CommandArgsException('Command ' . $command . ' doesn\'t exist');
111 $subargs = $this->args;
112 array_unshift($subargs, $this->executable);
114 $className = $this->subConsoles[$command];
116 $subconsole = new $className($subargs);
118 foreach ($this->options as $name => $value) {
119 $subconsole->setOption($name, $value);