/** * Prints a the program help * * @param array $cmdDef * @param \GetOptionKit\OptionCollection $specs */ private function printHelp($cmdDef, $specs) { $reqArgs = array_map('strtoupper', $cmdDef['args']['required']); $optArgs = array_map(function ($arg) { return '[' . strtoupper($arg) . ']'; }, $cmdDef['args']['optional']); $args = array_merge($reqArgs, $optArgs); $argNames = implode(' ', $args); echo "Usage: {$this->progPath} {$this->cmd} [OPTION] {$argNames}\n"; echo "{$cmdDef['title']}\n"; if (isset($cmdDef['help'])) { echo "{$cmdDef['help']}\n"; } echo "\n"; $widths = array_map(function ($spec) { return strlen($spec->renderReadableSpec()); }, $specs->all()); $width = max($widths); $lines = []; foreach ($specs->all() as $spec) { $c1 = str_pad($spec->renderReadableSpec(), $width); $line = sprintf("%s %s", $c1, $spec->desc); $lines[] = $line; } foreach ($lines as $line) { $line = trim($line); echo " {$line}\n"; } }