Tasker/examples/GreetingCommand.php

38 lines
1 KiB
PHP
Raw Permalink Normal View History

<?php
declare(strict_types=1);
namespace Phred\Tasker\Examples;
use Phred\ConsoleContracts\Attributes\Arg;
use Phred\ConsoleContracts\Attributes\Cmd;
use Phred\ConsoleContracts\Attributes\HasAttributes;
use Phred\ConsoleContracts\Attributes\Opt;
use Phred\ConsoleContracts\CommandInterface;
use Phred\ConsoleContracts\InputInterface;
use Phred\ConsoleContracts\OutputInterface;
#[Cmd(name: 'greeting:hello', description: 'A sample command using PHP 8 attributes.')]
#[Arg(name: 'name', description: 'The person to greet.')]
#[Opt(name: 'shout', description: 'Whether to shout the greeting.')]
class GreetingCommand implements CommandInterface
{
use HasAttributes;
public function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name', 'World');
$shout = $input->hasOption('shout');
$message = "Hello, {$name}!";
if ($shout) {
$message = strtoupper($message);
}
$output->writeln("<info>{$message}</info>");
return 0;
}
}