diff --git a/bin/acme b/bin/acme index 7e21837..9a6d4b5 100755 --- a/bin/acme +++ b/bin/acme @@ -30,8 +30,10 @@ $commands = [ "revoke", ]; -$help = implode("\n ", array_map(function ($command) { - return "bin/acme {$command}"; +$binary = \Kelunik\AcmeClient\getBinary(); + +$help = implode("\n ", array_map(function ($command) use ($binary) { + return "{$binary} {$command}"; }, $commands)); $help = <<arguments->parse(array_values($args)); } catch (Exception $e) { if (count($argv) === 3 && in_array($argv[2], ["h", "-h", "--help", "help"], true)) { - $climate->usage(["bin/acme {$argv[1]}"]); + $climate->usage(["{$binary} {$argv[1]}"]); $climate->br(); exit(0); } else { - $climate->usage(["bin/acme {$argv[1]}"]); + $climate->usage(["{$binary} {$argv[1]}"]); $climate->br(); $climate->error($e->getMessage()); @@ -128,7 +130,7 @@ Amp\run(function () use ($command, $climate) { $exitCode = (yield $command->execute($climate->arguments)); if ($exitCode === null) { - $logger->warning("Invalid exit code: null, falling back to 0. Please consider reporting this as bug."); + exit(0); } exit($exitCode); diff --git a/src/functions.php b/src/functions.php index b147465..cfd3c34 100644 --- a/src/functions.php +++ b/src/functions.php @@ -142,4 +142,31 @@ function getArgumentDescription($argument) { default: throw new \InvalidArgumentException("Unknown argument: " . $argument); } +} + +function getBinary() { + $binary = "bin/acme"; + + if (isPhar()) { + $binary = substr(Phar::running(true), strlen("phar://")); + + $path = getenv("PATH"); + $locations = explode(PATH_SEPARATOR, $path); + + $binaryPath = dirname($binary); + + foreach ($locations as $location) { + if ($location === $binaryPath) { + return substr($binary, strlen($binaryPath) + 1); + } + } + + $cwd = getcwd(); + + if ($cwd && strpos($binary, $cwd) === 0) { + $binary = "." . substr($binary, strlen($cwd)); + } + } + + return $binary; } \ No newline at end of file