mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-13 20:05:35 +08:00
Update ApplicationContext and InteractiveTerm to handle null outputs gracefully
This commit is contained in:
@@ -83,7 +83,7 @@ class ApplicationContext
|
|||||||
*
|
*
|
||||||
* @param class-string<T> $id Service identifier
|
* @param class-string<T> $id Service identifier
|
||||||
*
|
*
|
||||||
* @return T
|
* @return null|T
|
||||||
*/
|
*/
|
||||||
public static function get(string $id): mixed
|
public static function get(string $id): mixed
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace StaticPHP\Util;
|
|||||||
use StaticPHP\DI\ApplicationContext;
|
use StaticPHP\DI\ApplicationContext;
|
||||||
use Symfony\Component\Console\Helper\ProgressIndicator;
|
use Symfony\Component\Console\Helper\ProgressIndicator;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use ZM\Logger\ConsoleColor;
|
use ZM\Logger\ConsoleColor;
|
||||||
|
|
||||||
@@ -16,8 +17,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function notice(string $message, bool $indent = false): void
|
public static function notice(string $message, bool $indent = false): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
logger()->notice(strip_ansi_colors($message));
|
logger()->notice(strip_ansi_colors($message));
|
||||||
} else {
|
} else {
|
||||||
@@ -27,8 +28,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function success(string $message, bool $indent = false): void
|
public static function success(string $message, bool $indent = false): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
logger()->info(strip_ansi_colors($message));
|
logger()->info(strip_ansi_colors($message));
|
||||||
} else {
|
} else {
|
||||||
@@ -38,8 +39,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function plain(string $message): void
|
public static function plain(string $message): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
logger()->info(strip_ansi_colors($message));
|
logger()->info(strip_ansi_colors($message));
|
||||||
} else {
|
} else {
|
||||||
@@ -49,8 +50,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function info(string $message): void
|
public static function info(string $message): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if (!$output->isVerbose()) {
|
if (!$output->isVerbose()) {
|
||||||
$output->writeln(($no_ansi ? 'strip_ansi_colors' : 'strval')(ConsoleColor::green('▶ ') . $message));
|
$output->writeln(($no_ansi ? 'strip_ansi_colors' : 'strval')(ConsoleColor::green('▶ ') . $message));
|
||||||
}
|
}
|
||||||
@@ -59,8 +60,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function error(string $message, bool $indent = true): void
|
public static function error(string $message, bool $indent = true): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
logger()->error(strip_ansi_colors($message));
|
logger()->error(strip_ansi_colors($message));
|
||||||
} else {
|
} else {
|
||||||
@@ -75,15 +76,15 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function setMessage(string $message): void
|
public static function setMessage(string $message): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
self::$indicator?->setMessage(($no_ansi ? 'strip_ansi_colors' : 'strval')($message));
|
self::$indicator?->setMessage(($no_ansi ? 'strip_ansi_colors' : 'strval')($message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function finish(string $message, bool $status = true): void
|
public static function finish(string $message, bool $status = true): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$message = $no_ansi ? strip_ansi_colors($message) : $message;
|
$message = $no_ansi ? strip_ansi_colors($message) : $message;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
if ($status) {
|
if ($status) {
|
||||||
logger()->info($message);
|
logger()->info($message);
|
||||||
@@ -104,8 +105,8 @@ class InteractiveTerm
|
|||||||
|
|
||||||
public static function indicateProgress(string $message): void
|
public static function indicateProgress(string $message): void
|
||||||
{
|
{
|
||||||
$no_ansi = ApplicationContext::get(InputInterface::class)->getOption('no-ansi') ?? false;
|
$no_ansi = ApplicationContext::get(InputInterface::class)?->getOption('no-ansi') ?? false;
|
||||||
$output = ApplicationContext::get(OutputInterface::class);
|
$output = ApplicationContext::get(OutputInterface::class) ?? new ConsoleOutput();
|
||||||
if ($output->isVerbose()) {
|
if ($output->isVerbose()) {
|
||||||
logger()->info(strip_ansi_colors($message));
|
logger()->info(strip_ansi_colors($message));
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user