Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/netherphp/console

A CLI Parser.
https://github.com/netherphp/console

Last synced: 2 months ago
JSON representation

A CLI Parser.

Awesome Lists containing this project

README

        

# **Nether Console (netherphp/console)**

[![Packagist](https://img.shields.io/packagist/v/netherphp/console.svg?style=for-the-badge)](https://packagist.org/packages/netherphp/console)
[![Build Status](https://img.shields.io/github/actions/workflow/status/netherphp/console/phpunit.yml?style=for-the-badge)](https://github.com/netherphp/console/actions)
[![codecov](https://img.shields.io/codecov/c/gh/netherphp/console?style=for-the-badge&token=VQC48XNBS2)](https://codecov.io/gh/netherphp/console)

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

# Quickstart

```php
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

whatever

A whatever command.

whenever

A whenever command.

-u
Output as unix time.

```