nixphp / cli
NixPHP CLI Plugin for console applications.
Requires
- php: >=8.3
- ext-readline: *
- nixphp/framework: ^0.1.0
Requires (Dev)
- phpunit/php-code-coverage: ^12.1
- phpunit/phpunit: ^12.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-13 19:03:31 UTC
README
Important
NixPHP is now NAF — "Not Another Framework".
This package continues as naf/cli:
github.com/nafphp/cli ·
documentation ·
what changed and how to move
composer require naf/cli
The old name collided with NixOS down to the shell, where the
CLI binary was literally nix. This repository is archived and receives no further
releases; nixphp/cli stays on Packagist so existing installations keep working.
Note the plugin type. NAF discovers plugins by the Composer type naf-plugin.
A package still declaring nixphp-plugin is not loaded — silently, with no error.
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/nixas 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
composer require nixphp/cli
This will create vendor/bin/nix, your CLI gateway.
🚀 Usage
🔍 Run a command
vendor/bin/nix your:command
Commands are discovered automatically if placed in your app’s app/Commands/ directory.
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:
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:
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:
$output->drawStroke(30);
🧪 Interactive input
You can prompt the user:
$name = $input->ask('What is your name?');
📁 File structure
A typical CLI setup might look like this:
app/
└── Commands/
└── HelloCommand.php
vendor/
└── bin/
└── nix
bootstrap.php
✅ Requirements
nixphp/framework>= 0.1.0- PHP >= 8.3
📄 License
MIT License.