15 function __construct(Config
$config, Args
$args) {
16 $this->config
= $config;
20 function __invoke($argc, array $argv) {
21 $prog = array_shift($argv);
22 foreach ($this->args
->parse(--$argc, $argv) as $error) {
26 if ($this->args
["help"] ||
!array_filter($this->args
->toArray())) {
31 foreach ($errs as $err) {
32 fprintf(STDERR
, "ERROR: %s\n", $err);
37 if ($this->args
["ngrok"]) {
38 system($this->config
->ngrok
->command
. " ". implode(" ", array_map("escapeshellarg", [
40 "--subdomain=pharext",
42 $this->config
->ngrok
->auth
->token
,
44 $this->config
->ngrok
->auth
->user
.":". $this->config
->ngrok
->auth
->pass
,
50 function getConfig() {
55 * Output command line help message
58 public function help($prog) {
59 printf("Usage:\n\n \$ %s", $prog);
64 foreach ($this->args
->getSpec() as $spec) {
65 if ($spec[3] & Args
::REQARG
) {
66 if ($spec[3] & Args
::REQUIRED
) {
77 printf(" [-%s]", implode("", array_column($flags, 0)));
79 foreach ($required as $req) {
80 printf(" -%s <arg>", $req[0]);
83 printf(" [-%s <arg>]", implode("|-", array_column($optional, 0)));
86 $spc = $this->args
->getSpec();
87 $max = $spc ?
max(array_map("strlen", array_column($spc, 1))) : 0;
89 foreach ($spc as $spec) {
90 if (isset($spec[0])) {
91 printf(" -%s|", $spec[0]);
95 printf("--%s ", $spec[1]);
96 if ($spec[3] & Args
::REQARG
) {
98 } elseif ($spec[3] & Args
::OPTARG
) {
103 printf("%s%s", str_repeat(" ", $max-strlen($spec[1])+
3*!isset($spec[0])), $spec[2]);
104 if ($spec[3] & Args
::REQUIRED
) {
105 printf(" (REQUIRED)");
107 if (isset($spec[4])) {
108 printf(" [%s]", $spec[4]);