-module(glixir@utils). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/glixir/utils.gleam"). -export([get_env_or/2, is_verbose/0, debug_log/2, always_log/2, debug_log_with_prefix/3, debug_info/1, debug_error/1, debug_warning/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " Glixir utility functions\n" " \n" " Centralized utilities for environment detection, logging, and common helpers\n" ). -file("src/glixir/utils.gleam", 10). ?DOC(" Get environment variable with fallback default\n"). -spec get_env_or(binary(), binary()) -> binary(). get_env_or(Key, Default) -> gleam@option:unwrap(case envoy_ffi:get(Key) of {ok, Val} -> {some, Val}; {error, _} -> none end, Default). -file("src/glixir/utils.gleam", 21). ?DOC(" Check if verbose logging is enabled via VERBOSE environment variable\n"). -spec is_verbose() -> boolean(). is_verbose() -> get_env_or(<<"VERBOSE"/utf8>>, <<"false"/utf8>>) =:= <<"true"/utf8>>. -file("src/glixir/utils.gleam", 27). ?DOC( " Debug logging that respects VERBOSE environment variable\n" " Only logs when VERBOSE=true, otherwise silent\n" ). -spec debug_log(logging:log_level(), binary()) -> nil. debug_log(Level, Message) -> case is_verbose() of true -> logging:log(Level, Message); false -> nil end. -file("src/glixir/utils.gleam", 35). ?DOC(" Always log (for critical errors and important messages)\n"). -spec always_log(logging:log_level(), binary()) -> nil. always_log(Level, Message) -> logging:log(Level, Message). -file("src/glixir/utils.gleam", 40). ?DOC(" Log with module prefix for better traceability\n"). -spec debug_log_with_prefix(logging:log_level(), binary(), binary()) -> nil. debug_log_with_prefix(Level, Module_prefix, Message) -> debug_log( Level, <<<<<<"["/utf8, Module_prefix/binary>>/binary, "] "/utf8>>/binary, Message/binary>> ). -file("src/glixir/utils.gleam", 49). ?DOC(" Helper for info-level debug logging\n"). -spec debug_info(binary()) -> nil. debug_info(Message) -> debug_log(info, Message). -file("src/glixir/utils.gleam", 54). ?DOC(" Helper for error-level debug logging\n"). -spec debug_error(binary()) -> nil. debug_error(Message) -> debug_log(error, Message). -file("src/glixir/utils.gleam", 59). ?DOC(" Helper for warning-level debug logging\n"). -spec debug_warning(binary()) -> nil. debug_warning(Message) -> debug_log(warning, Message).