add Cli\Args\Help
[pharext/pharext] / src / pharext / Cli / Command.php
index 6ad2c806b4a4ccabe3602f1b5ed8c836e5ca6423..b733885a26a9c39e52d1d15544a2a631b2e889ce 100644 (file)
@@ -124,60 +124,7 @@ trait Command
         * @param string $prog
         */
        public function help($prog) {
-               printf("Usage:\n\n  \$ %s", $prog);
-               
-               $flags = [];
-               $required = [];
-               $optional = [];
-               foreach ($this->args->getSpec() as $spec) {
-                       if ($spec[3] & CliArgs::REQARG) {
-                               if ($spec[3] & CliArgs::REQUIRED) {
-                                       $required[] = $spec;
-                               } else {
-                                       $optional[] = $spec;
-                               }
-                       } else {
-                               $flags[] = $spec;
-                       }
-               }
-       
-               if ($flags) {
-                       printf(" [-%s]", implode("", array_column($flags, 0)));
-               }
-               foreach ($required as $req) {
-                       printf(" -%s <arg>", $req[0]);
-               }
-               if ($optional) {
-                       printf(" [-%s <arg>]", implode("|-", array_column($optional, 0)));
-               }
-               printf("\n\n");
-               $spc = $this->args->getSpec();
-               $max = max(array_map("strlen", array_column($spc, 1)));
-               $max += $max % 8 + 2;
-               foreach ($spc as $spec) {
-                       if (isset($spec[0])) {
-                               printf("    -%s|", $spec[0]);
-                       } else {
-                               printf("    ");
-                       }
-                       printf("--%s ", $spec[1]);
-                       if ($spec[3] & CliArgs::REQARG) {
-                               printf("<arg>  ");
-                       } elseif ($spec[3] & CliArgs::OPTARG) {
-                               printf("[<arg>]");
-                       } else {
-                               printf("       ");
-                       }
-                       printf("%s%s", str_repeat(" ", $max-strlen($spec[1])+3*!isset($spec[0])), $spec[2]);
-                       if ($spec[3] & CliArgs::REQUIRED) {
-                               printf(" (REQUIRED)");
-                       }
-                       if (isset($spec[4])) {
-                               printf(" [%s]", $spec[4]);
-                       }
-                       printf("\n");
-               }
-               printf("\n");
+               print new Args\Help($prog, $this->args);
        }
        
        /**