plugin install
==============

NAME
----
plugin install - Install/Add a plugin.

plugin add - Install/Add a plugin.

SYNOPSIS
--------
[verse]
'ssh' -p <port> <host> 'gerrit plugin install | add'
  [--name <NAME> | -n <NAME>]
  - | <URL> | <PATH>

DESCRIPTION
-----------
Install/Add a plugin. The plugin will be copied into the site path's
`plugins` directory.

ACCESS
------
Caller must be a member of the privileged 'Administrators' group.

SCRIPTING
---------
This command is intended to be used in scripts.

OPTIONS
-------
-::
	Plugin jar as piped input.

<URL>::
	URL from where the plugin should be downloaded. This can be an
	HTTP or FTP site.

<PATH>::
	Absolute file path to the plugin jar.

--name::
-n::
	The name under which the plugin should be installed.

EXAMPLES
--------
Install a plugin from an absolute file path on the server's host:

====
	ssh -p 29418 localhost gerrit plugin install -n name \
	  $(pwd)/my-plugin.jar
====

Install a plugin from an HTTP site:

====
	ssh -p 29418 localhost gerrit plugin install -n name \
	  http://build-server/output/our-plugin.jar
====

Install a plugin from piped input:

====
	ssh -p 29418 localhost gerrit plugin install -n name \
	  - <target/name-0.1.jar
====

GERRIT
------
Part of link:index.html[Gerrit Code Review]
