asika / jconsole
Useful Cli tools for Joomla CMS
Installs: 95
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 14
pkg:composer/asika/jconsole
Requires
- asika/joomla-console: 1.*
- joomla/filesystem: 1.*
- symfony/yaml: 2.*
README
An useful console tools for Joomla CMS
JConsole is a cli tools implement from Joomla Console Package. It provides an interface to create nested commands.
About Console package:
Please see: https://github.com/asika32764/joomla-framework/tree/console/src/Joomla/Console
Note: Console package has not added to Joomla Framework yet, it is an experimental package.
Installation via Composer
cd your/joomla/path php composer.phar create-project asika/jconsole libraries/jconsole 1.0.*
Then, remove libraries/jconsole/.gitignore if you want to track whole Joomla by Git, use root gitignore instead.
Getting started
Open terminal, go to path/of/joomla.
Type:
php cli/console
Will get a help message:
Joomla! Console - version: 1.0
------------------------------------------------------------
[console Help]
Usage:
  console <command> [option]
Options:
  -h | --help       Display this help message.
  -q | --quiet      Do not output any message.
  -v | --verbose    Increase the verbosity of messages.
  --no-ansi         Suppress ANSI colors on unsupported terminals.
Available commands:
  help      List all arguments and show usage & manual.
  build     Some useful tools for building system.
  sql       Example description.
  system    System control.
Welcome to Joomla! Console.
Available Commands
  help                   List all arguments and show usage & manual.
  build                  Some useful tools for building system.
      check-constants    Check php files which do not included Joomla constants.
      gen-command        Generate a command class.
      index              Create empty index.html files in directories.
  sql                    SQL migration tools.
      backup             Backup sql.
      col                Column operation
      export             Export sql.
      import             Import a sql file.
      profile            Profiles.
      restore            Restore to pervious point.
      table              Model operation.
  system                 System control.
      clean-cache        Clean system cache.
      off                Set this site offline.
      on                 Set this site online.
Add your own Commands
Use Plugin
Create a plugin in console group.
<?php // no direct access defined('_JEXEC') or die; class plgConsoleMycommand extends JPlugin { /** * onConsoleLoadCommand Event, called when auto added command. * * @param string $context The command class, example: 'Command\\Build\\Indexmaker'. * @param JConsole\Command\JCommand $command The parent command, You can addArgument to it. * * @return void */ public function onConsoleLoadCommand($context, $command) { if ($context != 'Command\\System\\System') { return; } /** @var $command JCommand */ $command->addArgument( 'mycommand', // Command name 'This is my command.', // Description null, // Options // Executing code. function($command) { $command->out('Hello World'); } ); } }
Now, this custom command will added to system command.
Joomla! Console - version: 1.0
------------------------------------------------------------
[system Help]
System control.
Usage:
  system <command> [option]
Options:
  -h | --help       Display this help message.
  -q | --quiet      Do not output any message.
  -v | --verbose    Increase the verbosity of messages.
  --no-ansi         Suppress ANSI colors on unsupported terminals.
Available commands:
  mycommand      This is my command.    <---- Here is your command
  clean-cache    Clean system cache.
  off            Set this site offline.
  on             Set this site online.
We execute it.
$ php cli/console system mycommand
Result
$ php console system mycommand
Hello World
Use custom Command class
We can put our commands in plugin folder:
plugins/system/mycomnand
    |---  Command
    |        |--- MyCommand
    |                |--- MyCommand.php  <--- Here is our command class
    |
    |---  mycommand.php
    |---  mycommand.xml
Create your command class.
<?php namespace Command\Mycommand; use JConsole\Command\JCommand; class Mycommand extends JCommand { /** * An enabled flag. * * @var bool */ public static $isEnabled = true; protected $name = 'mycommand'; protected $description = 'This is mycommand.'; protected function doExecute() { $this->out('Hello World.'); return; } }
Register command in your plugin.
public function onConsoleLoadCommand($context, $command) { if ($context != 'Command\\System\\System') { return; } // Add autoload to plugin folder JLoader::registerNamespace('Command', __DIR__); // Namespace 'Command\Mycommand\Mycommand` will auto match `Command/Mycommand/Mycommand.php` path. $command->addArgument(new Command\Mycommand\MyCommand); }
This result will be same as previous section.
How to use Command class
Please see: https://github.com/asika32764/joomla-framework/tree/console/src/Joomla/Console
And: https://github.com/asika32764/joomla-framework/tree/console/src/Joomla/Console/Command
Todo
- SQL migration documentation.
- Site Installation
- Assets tools
- ACL fixer
Contribution
Welcome any Pull-request.