| .github/workflows | ||
| .junie | ||
| bin | ||
| examples | ||
| src | ||
| tests | ||
| .gitignore | ||
| composer.json | ||
| MILESTONES.md | ||
| NOTES.md | ||
| phpstan.neon | ||
| phpunit.xml | ||
| README.md | ||
| SPECS.md | ||
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.jsonunderextra.phred-tasker.commands. - Run
composer dump-autoloadto 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.