joomla/joomla-cms — pull request #5460 by nikosdion (2014-12-17 16:52:14+00:00)
Title: CLI extensions installer

# Executive summary

This PR introduces a command-line interface (CLI) extensions installer. This allows automation of extension installation (new installs and updates) using command line tools. It can be used on various scenarios including, but not limited to, virtual machine provisioning (see Vagrant), automated tests for extension integration, mass updates of hundreds of sites in a hosting environment and so on. The script in this PR offers an equivalent to all of the installation methods allowed by the Extensions Manager in the back-end of your Joomla! site.

# Testing instructions

For testing purposes we are going to install the same dummy extension in several ways. After each installation please check that the extension is installed on your site. Then remove it and test the next method. There are eight tests in total, including the short and long command versions. _Important_: Being familiar with the command line environment is necessary, given the nature of this PR.

## Using an XML update stream (equivalent to Install from Web)
Run this script as
`php /path/to/site/cli/install-extension.php -w "http://akeebatest.s3.amazonaws.com/dummy/update.xml"`
Also try the long command version
`php /path/to/site/cli/install-extension.php --web="http://akeebatest.s3.amazonaws.com/dummy/update.xml"`

## Using an extension package URL (equivalent to Install from URL)
Run this script as
`php /path/to/site/cli/install-extension.php -u "http://akeebatest.s3.amazonaws.com/dummy/com_dummy-1.2.0.a1.zip"`
Also try the long command version
`php /path/to/site/cli/install-extension.php --url="http://akeebatest.s3.amazonaws.com/dummy/com_dummy-1.2.0.a1.zip"`

## Using a local extension package (equivalent to Install from Package File)
Download the [installation package](http://akeebatest.s3.amazonaws.com/dummy/com_dummy-1.2.0.a1.zip) into a directory, let's call it `/foo/bar`. DO NOT extract it! Now run
`php /path/to/site/cli/install-extension.php -p "/foo/bar/com_dummy-1.2.0.a1.zip"`
Also try the long command version
`php /path/to/site/cli/install-extension.php --package="/foo/bar/com_dummy-1.2.0.a1.zip"`

## Using a local directory (equivalent to Install from Directory)
Download the [installation package](http://akeebatest.s3.amazonaws.com/dummy/com_dummy-1.2.0.a1.zip) AND extract it into a directory, let's call it `/foo/bar`. Now run
`php /path/to/site/cli/install-extension.php -f "/foo/bar/com_dummy-1.2.0.a1.zip"`
Also try the long command version
`php /path/to/site/cli/install-extension.php --folder="/foo/bar/com_dummy-1.2.0.a1.zip"`

# Backwards compatibility
No b/c issues are present. This is a new CLI script which doesn't interfere with existing functionality.

# Translation impact
There are no translation strings added.

# Credits and acknowledgments
This PR is inspired by the CLI extension installation scripts written by [Nicola Galgano](https://github.com/alikon/joomla-platform-examples/blob/master/Joomla%20CLI%20App/cli/jeicli.php) and [yours truly](https://github.com/akeeba/vagrant/blob/master/vagrant/files/joomla/install-joomla-extension.php). It seems that many of us are reinventing the same small but very convenient wheel.