<?php 
 
use Lawondyss\ParexCommander\Console\Writer; 
use Lawondyss\ParexCommander\IO; 
 
require_once __DIR__ . '/../vendor/autoload.php'; 
 
$io = new IO(); 
 
$io->clearScreen(); 
$io->writeHeader("Parex Commander\nExample of using a IO class"); 
 
$go = $io->makeConfirmation( 
  prompt: 'Do you want to continue?' 
); 
$io->writeLn($go ? 'Thanks ?' : 'Err... ?'); 
 
if (!$go) { 
  $io->exitError(code: 128); 
} 
$io->monitoring( 
  label: "Wait a minute, I'm preparing questions.", 
  callback: static function (Writer $writer): void { 
    $phrases = ["I'm thinking...", "I'm writing...", "Where's my paper?", "Where's my pencil?", "I'd like some coffee."]; 
    $last = -1; 
 
    for ($i = 0; $i < 10; $i++) { 
      do { 
        $index = random_int(0, 4); 
      } while ($index === $last); 
      $writer->writeLn($phrases[$index]); 
      $last = $index; 
      sleep(1); 
    } 
  }, 
  lines: 2, 
); 
 
$name = $io->makeQuestion( 
  prompt: 'What is your name?', 
  validator: fn (string $input) => strlen($input) === 0 ? '?? Name is required' : true, 
); 
$io->writeLn("Hi, $name ?"); 
 
$purpose = $io->makeSelection( 
  prompt: 'What is your purpose?', 
  options: [ 
    'ac' => 'App creator', 
    'e' => 'Explorer', 
    '?' => '42', 
  ], 
); 
$io->writeLn(match ($purpose) { 
  'ac' => 'An excellent choice ?', 
  'e' => 'You found a powerful tool ?', 
  '?' => '??', 
  default => 'What?!' 
}); 
 
$frameworks = $io->makeSelection( 
  prompt: 'What is your favourite JS framework?', 
  options: ['Angular', 'React', 'Svelte', 'Vue'], 
  multiple: true, 
); 
$io->writeLn('WOW! I ? ', implode(' and ', $frameworks), ' too!'); 
 
$io->writeLn("Thanks, we'll get back to you."); 
$io->exitSuccess(); 
 
 |