https://github.com/nixphp/cli
NixPHP CLI Plugin for console aimed applications
https://github.com/nixphp/cli
Last synced: 3 months ago
JSON representation
NixPHP CLI Plugin for console aimed applications
- Host: GitHub
- URL: https://github.com/nixphp/cli
- Owner: nixphp
- Created: 2025-05-27T16:08:04.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-11-27T21:10:31.000Z (4 months ago)
- Last Synced: 2025-11-30T12:00:45.150Z (4 months ago)
- Language: PHP
- Size: 41 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

[](https://github.com/nixphp/cli/actions/workflows/php.yml)
[โ Back to NixPHP](https://github.com/nixphp/framework)
---
# nixphp/cli
> **A minimal, developer-friendly command-line interface for your NixPHP application.**
This plugin gives you a clean CLI system with colored output, argument parsing, and auto-discovered commands. All without external dependencies.
> ๐งฉ Part of the official NixPHP plugin collection. Install it if you want powerful CLI tools for development, deployment, and automation.
---
## ๐ฆ Features
- โ
Adds `vendor/bin/nix` as your appโs command-line entry point
- โ
Auto-discovers commands in `app/Commands/`
- โ
Supports arguments, options, and interactive input
- โ
Prints colored output for better UX
- โ
Fully extensible โ build your own tools and workflows
---
## ๐ฅ Installation
```bash
composer require nixphp/cli
```
This will create `vendor/bin/nix`, your CLI gateway.
---
## ๐ Usage
### ๐ Run a command
```bash
vendor/bin/nix your:command
```
Commands are discovered automatically if placed in your appโs `app/Commands/` directory.
```bash
vendor/bin/nix
```
If you call the helper without arguments, it prints all available CLI commands.
---
### ๐ ๏ธ Create a custom command
To create your own CLI command, add a class in the `app/Commands/` folder:
```php
namespace App\Commands;
use NixPHP\CLI\Core\AbstractCommand;
use NixPHP\CLI\Core\Input;
use NixPHP\CLI\Core\Output;
class HelloCommand extends AbstractCommand
{
public const NAME = 'hello:say';
protected function configure(): void
{
$this->setTitle('Say Hello');
$this->addArgument('name');
}
public function run(Input $input, Output $output): int
{
$name = $input->getArgument('name');
$output->writeLine("Hello, {$name}!", 'ok');
return static::SUCCESS;
}
}
```
No registration needed โ as long as the class resides in `app/Commands/`, it will be picked up automatically.
Then run:
```bash
vendor/bin/nix hello:say John
```
---
## ๐จ Colored output
Use `$output->writeLine()` to print messages with color support:
| Type | Appearance |
| ------------ | ----------------------- |
| `'ok'` | โ
Green |
| `'error'` | โ Red |
| `'warning'` | โ ๏ธ Yellow |
| `'title'` | ๐ก Light green on black |
| `'headline'` | ๐ข Light blue on black |
You can also draw horizontal lines:
```php
$output->drawStroke(30);
```
---
## ๐งช Interactive input
You can prompt the user:
```php
$name = $input->ask('What is your name?');
```
---
## ๐ File structure
A typical CLI setup might look like this:
```text
app/
โโโ Commands/
โโโ HelloCommand.php
vendor/
โโโ bin/
โโโ nix
bootstrap.php
```
---
## โ
Requirements
* `nixphp/framework` >= 0.1.0
* PHP >= 8.3
---
## ๐ License
MIT License.