---
title: 'Plugin Command'
url: 'https://learn.getgrav.org/2/cli-console/grav-cli-plugin'
markdown: 'https://learn.getgrav.org/2/cli-console/grav-cli-plugin.md'
date: '2025-12-24'
description: "Plugin Command Plugins can integrate to Grav's CLI bin/plugin and enhance the plugin functionalities via Terminal by executing specific tasks. As explained in the Grav CLI section, you need to use a terminal in order to be able to execute commands. When running the command bin/plugin, all the plugi…"
taxonomy:
  category:
    - docs
---

# Plugin Command

Plugins can integrate to Grav's CLI `bin/plugin` and enhance the plugin functionalities via Terminal by executing specific tasks.

As explained in the [Grav CLI](https://learn.getgrav.org/2/cli-console/grav-cli) section, you need to use a **terminal** in order to be able to execute commands.

When running the command `bin/plugin`, all the plugins who provide CLI integration will be listed.

![](https://learn.getgrav.org/user/pages/17/07.cli-console/03.grav-cli-plugin/bin-plugin.png)

The first option passed in to `bin/plugin` is always the plugin slug (ie, *error*, *login*, etc). The second option is the actual *command* that the plugin provides.

Based on the plugin implementation there could be other following options and you can learn more about each of them by running the `bin/plugin [slug] list` command.

## Reserved Commands and Options

There are some reserved *commands* and *options* that are always available from any plugin. These are also particularly important to keep in mind if you are a developer and want to implement your own tasks, because you won't be able to use any of the reserved commands and options.

| **Commands** |  |
|---|---|
| `help` | Displays help for a command |
| `list` | Lists commands |

| **Options** |  |
|---|---|
| `-h`, `--help` | Display help message |
| `-q`, `--quiet` | Do not output any message |
| `-v`, `--version` | Display application version |
| `--ansi` | Force ANSI output |
| `--no-ansi` | Disable ANSI output |
| `-n`, `--no-interaction` | Do not ask any interactive question |
| `-v\|vv\|vvv`, `--verbose` | Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug |

## How to Use the CLI for Plugins

The **list** and **help** commands are very useful when you don't know yet how to use a certain plugin CLI.

With **list** you can access all the available commands and view a quick description of what each of them do.

Here is an example with the **login** plugin when we run the command `bin/plugin login list`.

 Warning

Not specifying any command after the plugin slug defaults automatically to `list`. This means that both `bin/plugin [slug] list` and `bin/plugin [slug]` are equivalents.

![](https://learn.getgrav.org/user/pages/17/07.cli-console/03.grav-cli-plugin/bin-plugin-login.png)

As you can see, most of the options and commands correspond to the [reserved list](#reserved-commands-and-options). The actual commands offered by the login plugin are `add-user`, `new-user` and `newuser`.

As you can notice the help description of all 3 commands is identical. This is because, by choice, the 3 commands are exactly the same. **add-user** and **newuser** are in fact aliases for **new-user**, which allows to easily guess the command without knowing or remembering it.

Now that we know the login plugin comes with a `new-user` command, we only need to learn how to use it. This is where the reserved **help** command comes in place. Let's run `bin/plugin login help new-user`.

![](https://learn.getgrav.org/user/pages/17/07.cli-console/03.grav-cli-plugin/bin-plugin-newuser.png)

Now we have a complete understanding of the `new-user` command and we know how to use it. Let's try creating a new user. Because all the options are optional by definition, we will omit the password on purpose (we will be asked about it in a prompt later).

BASH

```
<span class="line"><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">bin/plugin</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">login</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">newuser</span><span class="token"> </span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">-</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">u</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">joeuser</span><span class="token"> </span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">-</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">e</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">joeuser@grav.org</span><span class="token"> </span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">-</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">P</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">b</span><span class="token"> </span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">-</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">N</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">Joe User</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token"> </span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">-</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">t</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">Site Administrator</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">Creating</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">new</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">user</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">Enter</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">a</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">password:</span><span class="token"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">Repeat</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">the</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">password:</span><span class="token"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">*</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">Success!</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">User</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">joeuser</span><span class="token"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">created.</span><span class="token">
</span></span>
```

## Developers: Integrate the CLI in Plugin

As a Developer, you might want to create CLI commands for admins or users to run. It is extremely easy to add such functionality in a Plugin.

The first thing you want to do is to create a subfolder `cli/` at the root of your plugin. This folder will be processed by `bin/plugin` and scanned for commands classes.

Grav's CLI is based on the great [Symfony Console Component](http://symfony.com/doc/current/components/console/introduction.html) and you can pretty much follow their documentation for a complete reference, there are just a few important things you should consider.

1. The name of the class file is standard. It should start with a capital letter and end with **Command.php**. 
    - `Hello.php`: WRONG
    - `helloworldCommand.php`: WRONG
    - `HelloworldCommand.php`: CORRECT
    - `HelloWorldCommand.php`: CORRECT
2. You should always extend `ConsoleCommand`, this will offer you some Grav extras such as formatted colors, direct access to the Grav instance and other utilities ([more details](https://github.com/getgrav/grav/blob/develop/system/src/Grav/Console/ConsoleTrait.php)).
3. Symfony Console requires an `execute` method. When extending **ConsoleCommand** this becomes `serve`.

Below is a simple example to get you started. You can test it, as is, by saving it as `HelloCommand.php` and by placing it under your plugin's root `cli/` folder (**user/plugins/my\_plugin/cli/HelloCommand.php**).

PHP

```
<span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 1</span><span class="token" style="color: #383A42;;--phiki-dark-color: #56b6c2"><</span><span class="token" style="color: #383A42;;--phiki-dark-color: #c678dd">?</span><span class="token" style="color: #986801;;--phiki-dark-color: #abb2bf">php</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 2</span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">namespace</span><span class="token"> </span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">Grav</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">\</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">Plugin</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">\</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">Console</span><span class="token" style="--phiki-dark-color: #abb2bf">;</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 3</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 4</span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">use</span><span class="token"> </span><span class="token" style="--phiki-dark-color: #abb2bf">Grav</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Console</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">ConsoleCommand</span><span class="token" style="--phiki-dark-color: #abb2bf">;</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 5</span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">use</span><span class="token"> </span><span class="token" style="--phiki-dark-color: #abb2bf">Symfony</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Component</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Console</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Input</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">InputArgument</span><span class="token" style="--phiki-dark-color: #abb2bf">;</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 6</span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">use</span><span class="token"> </span><span class="token" style="--phiki-dark-color: #abb2bf">Symfony</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Component</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Console</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="--phiki-dark-color: #abb2bf">Input</span><span class="token" style="--phiki-dark-color: #abb2bf">\</span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">InputOption</span><span class="token" style="--phiki-dark-color: #abb2bf">;</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 7</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 8</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">/**</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none"> 9</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> * Class HelloCommand
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">10</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> *
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">11</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> * </span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">@package</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> Grav\Plugin\Console
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">12</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">*/</span><span class="token">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">13</span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">class</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">HelloCommand</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">extends</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">ConsoleCommand</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">14</span><span class="token" style="color: #383A42;">{</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">15</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">/**</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">16</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     * </span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">@var</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> </span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">array</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">17</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">*/</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">18</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">protected</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">options</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #56b6c2">=</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">[</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">]</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">19</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">20</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">/**</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">21</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     * Greets a person with or without yelling
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">22</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">*/</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">23</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">protected</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">function</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">configure</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">24</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">{</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">25</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">26</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">setName</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">hello</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">27</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">setDescription</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">Greets a person.</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">"</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">28</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">addArgument</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">29</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">name</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">30</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">InputArgument</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">::</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">REQUIRED</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">31</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">The name of the person that should be greeted</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">32</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">33</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">addOption</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">34</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">yell</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">35</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">y</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">36</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #C18401;;--phiki-dark-color: #e5c07b">InputOption</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">::</span><span class="token" style="color: #986801;;--phiki-dark-color: #d19a66">VALUE_NONE</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">37</span><span class="token" style="color: #383A42;">                </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">Wheter the greetings should be yelled or quieter</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">38</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">39</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">setHelp</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">The <info>hello</info> greets someone.</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">40</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">41</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">}</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">42</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">43</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">/**</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">44</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     * </span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">@return</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> </span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">int</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #abb2bf;--phiki-dark-font-style: italic">|</span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">null</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #abb2bf;--phiki-dark-font-style: italic">|</span><span class="token" style="color: #A626A4;font-style: italic;;--phiki-dark-color: #c678dd;--phiki-dark-font-style: italic">void</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">45</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">     </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">*/</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">46</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">protected</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">function</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">serve</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">47</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">{</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">48</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> Collects the arguments and options as defined</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">49</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">options</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #56b6c2">=</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">[</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">50</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">name</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">=></span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">input</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">getArgument</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">name</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">,</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">51</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">yell</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">=></span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">input</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">getOption</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">yell</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">52</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">]</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">53</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">54</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> Prepare the strings we want to output and wraps the name into a cyan color</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">55</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> More colors available at:</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">56</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> https://github.com/getgrav/grav/blob/develop/system/src/Grav/Console/ConsoleTrait.php</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">57</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">greetings</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #56b6c2">=</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">Greetings, dear <cyan></span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">.</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">options</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">[</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">name</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">]</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">.</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379"></cyan>!</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">58</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">59</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> If the optional `--yell` or `-y` parameter are passed in, let's convert everything to uppercase</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">60</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A626A4;;--phiki-dark-color: #c678dd">if</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">options</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">[</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">yell</span><span class="token" style="color: #50A14F;;--phiki-dark-color: #98c379">'</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">]</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">{</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">61</span><span class="token" style="color: #383A42;">            </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">greetings</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #383A42;;--phiki-dark-color: #56b6c2">=</span><span class="token" style="color: #383A42;"> </span><span class="token" style="color: #0184BC;;--phiki-dark-color: #56b6c2">strtoupper</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">greetings</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">62</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">}</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">63</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">64</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">//</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic"> finally we write to the output the greetings</span><span class="token" style="color: #A0A1A7;font-style: italic;;--phiki-dark-color: #7f848e;--phiki-dark-font-style: italic">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">65</span><span class="token" style="color: #383A42;">        </span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e5c07b">this</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">output</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">-></span><span class="token" style="color: #4078F2;;--phiki-dark-color: #61afef">writeln</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">(</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">$</span><span class="token" style="color: #E45649;;--phiki-dark-color: #e06c75">greetings</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">)</span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">;</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">66</span><span class="token" style="color: #383A42;">    </span><span class="token" style="color: #383A42;;--phiki-dark-color: #abb2bf">}</span><span class="token" style="color: #383A42;">
</span></span><span class="line"><span class="line-number" style="color: #9D9D9F;-webkit-user-select: none">67</span><span class="token" style="color: #383A42;">}</span><span class="token">
</span></span>
```

![](https://learn.getgrav.org/user/pages/17/07.cli-console/03.grav-cli-plugin/grav-plugin-hello.png)

 Warning

Another good simple example can be found in the [Error Plugin (LogCommand.php)](https://github.com/getgrav/grav-plugin-error/blob/develop/cli/LogCommand.php), If you are looking for a more complex example, you should have a look at the [Login Plugin (NewUserCommand.php)](https://github.com/getgrav/grav-plugin-login/blob/develop/cli/NewUserCommand.php)

 [ Edit this page on Github ](https://github.com/getgrav/grav-learn/edit/develop/pages/2/07.cli-console/03.grav-cli-plugin/doc.md) 

 © 2026 Grav Documentation. All rights reserved.

---

## Navigation

- Parent: [CLI Console](https://learn.getgrav.org/2/cli-console.md)
- Previous: [Grav command](https://learn.getgrav.org/2/cli-console/grav-cli.md)
- Next: [GPM Command](https://learn.getgrav.org/2/cli-console/grav-cli-gpm.md)
