Example #1
0
 /**
  * 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;
     }
 }