/** * Add a cell to the table. * * @param string $text The text of the cell. * @param array $wrap A two element array used to wrap the text in the cell. * @return $this Returns this object for fluent calls. */ protected function addCell($text, $wrap = ['', '']) { if ($this->currentRow === null) { $this->row(); } $i = count($this->currentRow); $this->columnWidths[$i] = max(strlen($text), Cli::val($i, $this->columnWidths, 0)); // max column width $this->currentRow[$i] = [$text, $wrap]; return $this; }
/** * Get the value of a passed option. * * @param string $option The name of the option to get. * @param mixed $default The default value if the option does not exist. * @return mixed Returns the option or {@link $default} if it does not exist. */ public function getOpt($option, $default = null) { return Cli::val($option, $this->opts, $default); }
/** * Writes the help for a given schema. * * @param array $schema A command line scheme returned from {@see Cli::getSchema()}. */ protected function writeHelp($schema) { // Write the command description. $meta = Cli::val(Cli::META, $schema, []); $description = Cli::val('description', $meta); if ($description) { echo implode("\n", Cli::breakLines($description, 80, false)) . PHP_EOL . PHP_EOL; } unset($schema[Cli::META]); // Add the help. $schema['help'] = ['description' => 'Display this help.', 'type' => 'boolean', 'short' => '?']; echo Cli::bold('OPTIONS') . PHP_EOL; ksort($schema); $table = new Table(); $table->format = $this->format; foreach ($schema as $key => $definition) { $table->row(); // Write the keys. $keys = "--{$key}"; if ($shortKey = Cli::val('short', $definition, false)) { $keys .= ", -{$shortKey}"; } if (Cli::val('required', $definition)) { $table->bold($keys); } else { $table->cell($keys); } // Write the description. $table->cell(Cli::val('description', $definition, '')); } $table->write(); echo PHP_EOL; $args = Cli::val(Cli::ARGS, $meta, []); if (!empty($args)) { echo Cli::bold('ARGUMENTS') . PHP_EOL; $table = new Table(); $table->format = $this->format; foreach ($args as $aname => $arg) { $table->row(); if (Cli::val('required', $definition)) { $table->bold($aname); } else { $table->cell($aname); } $table->cell(Cli::val('description', $arg, '')); } $table->write(); echo PHP_EOL; } }