netherphp/console

A CLI Parser

v4.0.7 2022-01-28 02:39 UTC

README

Packagist Build Status codecov

This package provides some basic functionality for creating command line interfaces via PHP 8 attributes.

Quickstart

require('vendor/autoloader.php');

use Nether\Console\Meta\Command;
use Nether\Console\Meta\Info;
use Nether\Console\Meta\Arg;
use Nether\Console\Meta\Toggle;

class App
extends Nether\Console\Client {

	#[Command]
	#[Info('A whatever command.')]
	public function
	Whatever():
	int {

		echo 'Whatever', PHP_EOL;
		return 0;
	}

	#[Command]
	#[Info('A whenever command.')]
	#[Arg('date', 'A date input.')]
	#[Toggle('-u', 'Output as unix time.')]
	public function
	Whenever():
	int {

		$Date = $this->GetInput(1);
		$Unixise = $this->GetOption('u');

		if($Unixise)
		echo date('U', strtotime($Date));
		else
		echo date('Y-m-d', strtotime($Date));

		echo PHP_EOL;

		return 0;
	}

}

exit((new App)->Run());
$ php ./test.php

USAGE: test.php <command> <args>

  whatever

    A whatever command.

  whenever <date>

    A whenever command.

    -u
      Output as unix time.