ricardopedias/freep-console

Camada para linha de comando do framework Freep.


Keywords
framework, console, tool, freep
License
MIT

Documentation

Freep Console

PHP Version License Codacy Badge Codacy Badge

Synopsis

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

For detailed information, consult the documentation in English or Portuguese. See also this readme in Portuguese.

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 ❤️ & .

Summary

Credits

Ricardo Pereira Dias