From 6398b2958b9af9e8d1a34b8bcd72a4a782e25ca5 Mon Sep 17 00:00:00 2001 From: netkas Date: Tue, 17 Sep 2024 15:35:20 -0400 Subject: [PATCH] Refactor logging level checks to use LogLevel enum directly --- src/ncc/CLI/Main.php | 16 +++++++++----- src/ncc/Classes/NccExtension/NccCompiler.php | 2 +- .../PhpExtension/ExecutableCompiler.php | 4 ++-- src/ncc/Managers/PackageManager.php | 8 +++---- src/ncc/Utilities/Console.php | 18 ++++++++-------- src/ncc/Utilities/Resolver.php | 21 +++++++++---------- src/ncc/Utilities/Validate.php | 7 ++++++- 7 files changed, 43 insertions(+), 33 deletions(-) diff --git a/src/ncc/CLI/Main.php b/src/ncc/CLI/Main.php index 84ad248..cda1d43 100644 --- a/src/ncc/CLI/Main.php +++ b/src/ncc/CLI/Main.php @@ -114,7 +114,7 @@ self::$log_level = LogLevel::INFO->value; } - if(Resolver::checkLogLevel(self::$log_level, LogLevel::DEBUG->value)) + if(Resolver::checkLogLevel(self::$log_level, LogLevel::DEBUG)) { Console::outDebug('Debug logging enabled'); @@ -230,15 +230,21 @@ } /** - * @return string + * @return LogLevel */ - public static function getLogLevel(): string + public static function getLogLevel(): LogLevel { if(self::$log_level === null) { - self::$log_level = LogLevel::INFO->value; + self::$log_level = LogLevel::INFO; } - return self::$log_level; + $level = LogLevel::tryFrom(self::$log_level); + if($level === null) + { + return self::$log_level = LogLevel::INFO; + } + + return $level; } } \ No newline at end of file diff --git a/src/ncc/Classes/NccExtension/NccCompiler.php b/src/ncc/Classes/NccExtension/NccCompiler.php index 2c62b57..a5bc347 100644 --- a/src/ncc/Classes/NccExtension/NccCompiler.php +++ b/src/ncc/Classes/NccExtension/NccCompiler.php @@ -123,7 +123,7 @@ } // Debugging information - if(Resolver::checkLogLevel(LogLevel::DEBUG->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel())) { foreach($this->project_manager->getProjectConfiguration()->getAssembly()->toArray() as $prop => $value) { diff --git a/src/ncc/Classes/PhpExtension/ExecutableCompiler.php b/src/ncc/Classes/PhpExtension/ExecutableCompiler.php index 926fc0a..2c6d2ce 100644 --- a/src/ncc/Classes/PhpExtension/ExecutableCompiler.php +++ b/src/ncc/Classes/PhpExtension/ExecutableCompiler.php @@ -112,11 +112,11 @@ switch(Main::getLogLevel()) { - case LogLevel::VERBOSE->value: + case LogLevel::VERBOSE: $gcc_options[] = '-v'; break; - case LogLevel::DEBUG->value: + case LogLevel::DEBUG: $gcc_options[] = '-v'; $gcc_options[] = '-v'; break; diff --git a/src/ncc/Managers/PackageManager.php b/src/ncc/Managers/PackageManager.php index 822e924..f8c9437 100644 --- a/src/ncc/Managers/PackageManager.php +++ b/src/ncc/Managers/PackageManager.php @@ -665,7 +665,7 @@ { $progress_bar->setMiscText($component_name); - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { Console::outVerbose(sprintf('Extracting component %s to %s', $component_name, $bin_path . DIRECTORY_SEPARATOR . $component_name)); } @@ -683,7 +683,7 @@ { $progress_bar->setMiscText($resource_name); - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { Console::outVerbose(sprintf('Extracting resource %s to %s', $resource_name, $bin_path . DIRECTORY_SEPARATOR . $resource_name)); } @@ -701,7 +701,7 @@ { $progress_bar->setMiscText($unit); - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { Console::outVerbose(sprintf('Extracting execution unit %s to %s', $unit, $package_path . DIRECTORY_SEPARATOR . 'units' . DIRECTORY_SEPARATOR . $package_reader->getExecutionUnit($unit)->getExecutionPolicy()->getName() . '.unit')); } @@ -907,7 +907,7 @@ return; } - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { $percentage = round(($downloaded / $download_size) * 100, 2); Console::out(sprintf('Download progress %s (%s/%s) for %s', $percentage, $downloaded, $download_size, $url)); diff --git a/src/ncc/Utilities/Console.php b/src/ncc/Utilities/Console.php index 2734f17..ed1ee1b 100644 --- a/src/ncc/Utilities/Console.php +++ b/src/ncc/Utilities/Console.php @@ -109,12 +109,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::INFO->value, Main::getLogLevel())) + if(!Resolver::checkLogLevel(LogLevel::INFO, Main::getLogLevel())) { return; } - if(!$no_prefix && Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(!$no_prefix && Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { $message = self::setPrefix(LogLevel::INFO->value, $message); } @@ -142,7 +142,7 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::DEBUG->value, Main::getLogLevel())) + if(!Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel())) { return; } @@ -179,7 +179,7 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(!Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { return; } @@ -225,12 +225,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::WARNING->value, Main::getLogLevel())) + if(!Resolver::checkLogLevel(LogLevel::WARNING, Main::getLogLevel())) { return; } - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { self::out(self::setPrefix(LogLevel::WARNING->value, $message), $newline, true); return; @@ -254,12 +254,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::ERROR->value, Main::getLogLevel())) + if(!Resolver::checkLogLevel(LogLevel::ERROR, Main::getLogLevel())) { return; } - if(Resolver::checkLogLevel(LogLevel::VERBOSE->value, Main::getLogLevel())) + if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) { self::out(self::setPrefix(LogLevel::ERROR->value, $message), $newline, true); } @@ -289,7 +289,7 @@ return; } - if($message !== '' && Resolver::checkLogLevel(LogLevel::ERROR->value, Main::getLogLevel())) + if($message !== '' && Resolver::checkLogLevel(LogLevel::ERROR, Main::getLogLevel())) { self::out(PHP_EOL . self::formatColor('Error: ', ConsoleColors::RED->value) . $message); } diff --git a/src/ncc/Utilities/Resolver.php b/src/ncc/Utilities/Resolver.php index e03b5de..deb0d4e 100644 --- a/src/ncc/Utilities/Resolver.php +++ b/src/ncc/Utilities/Resolver.php @@ -163,24 +163,23 @@ /** * Checks if the input level matches the current level * - * @param string|null $input - * @param string|null $current_level + * @param LogLevel|null $input + * @param LogLevel|null $current_level * @return bool */ - public static function checkLogLevel(?string $input, ?string $current_level): bool + public static function checkLogLevel(?LogLevel $input, ?LogLevel $current_level): bool { + // TODO: This method can be merged into the enum class instead if ($input === null || $current_level === null) { return false; } - $input = strtolower($input); if (!Validate::checkLogLevel($input)) { return false; } - $current_level = strtolower($current_level); if (!Validate::checkLogLevel($current_level)) { return false; @@ -188,12 +187,12 @@ return match ($current_level) { - LogLevel::DEBUG->value => in_array($input, [LogLevel::DEBUG->value, LogLevel::VERBOSE->value, LogLevel::INFO->value, LogLevel::WARNING->value, LogLevel::FATAL->value, LogLevel::ERROR->value], true), - LogLevel::VERBOSE->value => in_array($input, [LogLevel::VERBOSE->value, LogLevel::INFO->value, LogLevel::WARNING->value, LogLevel::FATAL->value, LogLevel::ERROR->value], true), - LogLevel::INFO->value => in_array($input, [LogLevel::INFO->value, LogLevel::WARNING->value, LogLevel::FATAL->value, LogLevel::ERROR->value], true), - LogLevel::WARNING->value => in_array($input, [LogLevel::WARNING->value, LogLevel::FATAL->value, LogLevel::ERROR->value], true), - LogLevel::ERROR->value => in_array($input, [LogLevel::FATAL->value, LogLevel::ERROR->value], true), - LogLevel::FATAL->value => $input === LogLevel::FATAL->value, + LogLevel::DEBUG => in_array($input, [LogLevel::DEBUG, LogLevel::VERBOSE, LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::VERBOSE => in_array($input, [LogLevel::VERBOSE, LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::INFO => in_array($input, [LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::WARNING => in_array($input, [LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::ERROR => in_array($input, [LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::FATAL => $input === LogLevel::FATAL, default => false, }; } diff --git a/src/ncc/Utilities/Validate.php b/src/ncc/Utilities/Validate.php index 5ea09d3..1e02c8e 100644 --- a/src/ncc/Utilities/Validate.php +++ b/src/ncc/Utilities/Validate.php @@ -226,8 +226,13 @@ namespace ncc\Utilities; * @param string $input * @return bool */ - public static function checkLogLevel(string $input): bool + public static function checkLogLevel(string|LogLevel $input): bool { + if($input instanceof LogLevel) + { + return true; + } + return in_array(strtolower($input), array_map( fn($case) => $case->value, LogLevel::cases()), true );