38 lines
1 KiB
PHP
38 lines
1 KiB
PHP
|
|
<?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;
|
||
|
|
}
|
||
|
|
}
|