/freep-console

Toolkit for implementing PHP-based terminal commands / Kit de ferramentas para implementação de comandos de terminal baseados em PHP

Primary LanguagePHPMIT LicenseMIT

Freep Console

PHP Version License Codacy Badge Codacy Badge

English Português

Synopsis

This repository contains the necessary functionality to easily implement a terminal command manager in a PHP application.

composer require ricardopedias/freep-console

For detailed information, see Documentation Summary.

How to use

1. Create a command

Implement a command called "my-command", based on the abstract class Freep\Console\Command:

class MyCommand extends Command
{
    protected function initialize(): void
    {
        $this->setName("my-command");
        $this->addOption(
            new Option('-r', '--read', 'Read a text file', Option::REQUIRED)
        );
    }

    protected function handle(Arguments $arguments): void
    {
        $this->info("Hello");
    }
}

2. Create a script

Create a file, call it for example "myconsole", and add the following content:

#!/bin/php
<?php
include __DIR__ . "/vendor/autoload.php";

array_shift($argv);

$terminal = new Freep\Console\Terminal("/root/of/super/application");
$terminal->loadCommandsFrom("/directory/of/commands");
$terminal->run($argv);

3. Run the script

./myconsole my-command -r
# will display: Hello
./myconsole my-command --help
# will display:
#
# Command: my-command
# Run the 'my-command' command
# 
# How to use:
# ./myconsole my-command [options]
# 
# Options:
# -h, --help   Display command help
# -r, --read   Read a text file
./myconsole --help
# will display:
#
# How to use:
# ./myconsole command [options] [arguments]
# 
# Options:
# -h, --help   Display command help
#
# Available commands:
# help           Display command help
# my-command     Run the 'my-command' command

Characteristics

  • Made for PHP 8.0 or higher;
  • Codified with best practices and maximum quality;
  • Well documented and IDE friendly;
  • Made with TDD (Test Driven Development);
  • Implemented with unit tests using PHPUnit;
  • Made with ❤️ & ☕.

Credits

Ricardo Pereira Dias