From e624663f629d52e863e774640b2da393a6d04c3b Mon Sep 17 00:00:00 2001 From: netkas Date: Tue, 17 Sep 2024 19:20:18 -0400 Subject: [PATCH] Refactor log level checking to enum method --- src/ncc/CLI/Main.php | 2 +- src/ncc/Classes/NccExtension/NccCompiler.php | 2 +- src/ncc/Enums/LogLevel.php | 27 ++++++++++++++ src/ncc/Managers/PackageManager.php | 8 ++--- src/ncc/Utilities/Console.php | 18 +++++----- src/ncc/Utilities/Resolver.php | 37 -------------------- 6 files changed, 42 insertions(+), 52 deletions(-) diff --git a/src/ncc/CLI/Main.php b/src/ncc/CLI/Main.php index dc60114..08c9c25 100644 --- a/src/ncc/CLI/Main.php +++ b/src/ncc/CLI/Main.php @@ -98,7 +98,7 @@ self::$log_level = LogLevel::INFO; } - if(Resolver::checkLogLevel(self::$log_level, LogLevel::DEBUG)) + if(self::$log_level->checkLogLevel(LogLevel::DEBUG)) { Console::outDebug('Debug logging enabled'); diff --git a/src/ncc/Classes/NccExtension/NccCompiler.php b/src/ncc/Classes/NccExtension/NccCompiler.php index a5bc347..e788ca5 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, Main::getLogLevel())) + if(LogLevel::DEBUG->checkLogLevel(Main::getLogLevel())) { foreach($this->project_manager->getProjectConfiguration()->getAssembly()->toArray() as $prop => $value) { diff --git a/src/ncc/Enums/LogLevel.php b/src/ncc/Enums/LogLevel.php index 1fca8dc..5871b8d 100644 --- a/src/ncc/Enums/LogLevel.php +++ b/src/ncc/Enums/LogLevel.php @@ -22,6 +22,8 @@ namespace ncc\Enums; + use ncc\Utilities\Validate; + enum LogLevel : string { case SILENT = 'silent'; @@ -38,6 +40,31 @@ case FATAL = 'fatal'; + /** + * Checks if the current log level permits logging at the specified level. + * + * @param LogLevel|null $current_level The log level to be checked. If null, the method returns false. + * @return bool Returns true if logging is permitted at the specified level, otherwise false. + */ + public function checkLogLevel(?LogLevel $current_level): bool + { + if ($current_level === null) + { + return false; + } + + return match ($current_level) + { + LogLevel::DEBUG => in_array($this, [LogLevel::DEBUG, LogLevel::VERBOSE, LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::VERBOSE => in_array($this, [LogLevel::VERBOSE, LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::INFO => in_array($this, [LogLevel::INFO, LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::WARNING => in_array($this, [LogLevel::WARNING, LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::ERROR => in_array($this, [LogLevel::FATAL, LogLevel::ERROR], true), + LogLevel::FATAL => $this === LogLevel::FATAL, + default => false, + }; + } + /** * Converts the given string input to a LogLevel. * If the input is invalid or not found, it defaults to LogLevel::INFO. diff --git a/src/ncc/Managers/PackageManager.php b/src/ncc/Managers/PackageManager.php index f8c9437..e5e436a 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, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(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, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(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, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(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, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(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 ed1ee1b..a7050cd 100644 --- a/src/ncc/Utilities/Console.php +++ b/src/ncc/Utilities/Console.php @@ -109,12 +109,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::INFO, Main::getLogLevel())) + if(!LogLevel::INFO->checkLogLevel(Main::getLogLevel())) { return; } - if(!$no_prefix && Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) + if(!$no_prefix && LogLevel::VERBOSE->checkLogLevel(Main::getLogLevel())) { $message = self::setPrefix(LogLevel::INFO->value, $message); } @@ -142,7 +142,7 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel())) + if(!LogLevel::DEBUG->checkLogLevel(Main::getLogLevel())) { return; } @@ -179,7 +179,7 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) + if(!LogLevel::VERBOSE->checkLogLevel(Main::getLogLevel())) { return; } @@ -225,12 +225,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::WARNING, Main::getLogLevel())) + if(!LogLevel::WARNING->checkLogLevel(Main::getLogLevel())) { return; } - if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(Main::getLogLevel())) { self::out(self::setPrefix(LogLevel::WARNING->value, $message), $newline, true); return; @@ -254,12 +254,12 @@ return; } - if(!Resolver::checkLogLevel(LogLevel::ERROR, Main::getLogLevel())) + if(!LogLevel::ERROR->checkLogLevel(Main::getLogLevel())) { return; } - if(Resolver::checkLogLevel(LogLevel::VERBOSE, Main::getLogLevel())) + if(LogLevel::VERBOSE->checkLogLevel(Main::getLogLevel())) { self::out(self::setPrefix(LogLevel::ERROR->value, $message), $newline, true); } @@ -289,7 +289,7 @@ return; } - if($message !== '' && Resolver::checkLogLevel(LogLevel::ERROR, Main::getLogLevel())) + if($message !== '' && LogLevel::ERROR->checkLogLevel(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 deb0d4e..b50b6df 100644 --- a/src/ncc/Utilities/Resolver.php +++ b/src/ncc/Utilities/Resolver.php @@ -160,43 +160,6 @@ return hash('haval128,3', self::resolveFullConstantName($scope, $name)); } - /** - * Checks if the input level matches the current level - * - * @param LogLevel|null $input - * @param LogLevel|null $current_level - * @return 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; - } - - if (!Validate::checkLogLevel($input)) - { - return false; - } - - if (!Validate::checkLogLevel($current_level)) - { - return false; - } - - return match ($current_level) - { - 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, - }; - } - /** * Returns the ProjectDetectionResults of the project in the specified directory *