. * * @link https://www.librenms.org * * @copyright 2022 Tony Murray * @author Tony Murray */ namespace App\Console; use Symfony\Component\Console\Input\InputOption; class DynamicInputOption extends InputOption { /** @var callable|null */ private $valuesCallable; public function __construct(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null, ?callable $valuesCallable = null) { $this->valuesCallable = $valuesCallable; parent::__construct($name, $shortcut, $mode, $description, $default); } public function getDescription() { $description = parent::getDescription(); if (is_callable($this->valuesCallable)) { $description .= ' [' . implode(', ', call_user_func($this->valuesCallable)) . ']'; } return $description; } }