Tasker/README.md
Funky Waddle 3ac2894fd8
Some checks are pending
CI / tasker (8.2) (push) Waiting to run
CI / tasker (8.3) (push) Waiting to run
feat: complete Tasker project implementation, documentation, and examples
2026-02-22 01:14:22 -06:00

2.6 KiB

Tasker

A CLI tool manager for the Phred Framework, designed to streamline development tasks and project management.

Quick Start

1. Installation

Tasker is typically installed via Composer as part of the Phred Framework, but can be used as a standalone runner.

{
    "require": {
        "getphred/tasker": "dev-master"
    }
}

2. Basic Usage

The primary entry point is the bin/tasker executable.

./vendor/bin/tasker list

3. Command Discovery

Tasker automatically discovers commands defined in your composer.json or in any installed package's composer.json using the extra.phred-tasker key.

{
    "extra": {
        "phred-tasker": {
            "commands": [
                "App\\Commands\\MyCustomCommand"
            ]
        }
    }
}

4. Implementing a Command

Commands must implement Phred\ConsoleContracts\CommandInterface.

namespace App\Commands;
use Phred\ConsoleContracts\CommandInterface;
use Phred\ConsoleContracts\InputInterface;
use Phred\ConsoleContracts\OutputInterface;
class MyCustomCommand implements CommandInterface
{
    public function getName(): string { return 'my:command'; }
    public function getDescription(): string { return 'My custom command description'; }
    public function getArguments(): array { return ['name' => 'The name to greet']; }
    public function getOptions(): array { return []; }
    public function execute(InputInterface $input, OutputInterface $output): int
    {
        $name = $input->getArgument('name', 'World');
        $output->writeln("<info>Hello, {$name}!</info>");
        return 0;
    }
}

5. Dependency Injection

Tasker supports PSR-11 containers. Pass your container to the Runner constructor to enable dependency injection for your commands.

use Phred\Tasker\Runner;
$runner = new Runner($myContainer);
$runner->discover();
// ... execute runner

Global Flags

  • -v|-vv|-vvv: Increase verbosity of output.
  • -q|--quiet: Suppress all output.
  • -n|--no-interaction: Do not ask any interactive questions.
  • --no-ansi: Disable ANSI output.
  • -h|--help: Display help for the given command.

Troubleshooting

Command not found

  • Ensure the command class is correctly listed in composer.json under extra.phred-tasker.commands.
  • Run composer dump-autoload to ensure the class is discoverable.
  • Check if the command class implements Phred\ConsoleContracts\CommandInterface.

Missing dependencies

  • If using a container, ensure the command is registered in the container or has a public parameterless constructor if you want Tasker to instantiate it directly.