hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

diagnostics.mojo (2361B)


      1 from std.ffi import c_int, external_call
      2 from std.os import getenv, makedirs
      3 from std.pathlib import Path
      4 
      5 from hyf_runtime.paths import RuntimePaths
      6 from hyf_runtime.startup import resolve_startup_context_from_process
      7 
      8 
      9 comptime _HYF_DIAGNOSTICS_DIR_ENV = "HYF_DIAGNOSTICS_DIR"
     10 comptime _HYF_DIAGNOSTICS_FILE_PREFIX = "hyf-internal-error-pid-"
     11 comptime _HYF_DIAGNOSTICS_FILE_SUFFIX = ".log"
     12 comptime _HYF_DIAGNOSTICS_DIR_MODE = 0o700
     13 comptime _HYF_DIAGNOSTICS_FILE_MODE = 0o600
     14 
     15 
     16 def hyf_diagnostics_dir_debug_override_env_name() -> String:
     17     return _HYF_DIAGNOSTICS_DIR_ENV
     18 
     19 
     20 def _current_process_id() -> Int:
     21     return Int(external_call["getpid", c_int]())
     22 
     23 
     24 def _ensure_directory_mode(path: Path):
     25     var path_str = path.__fspath__()
     26     _ = external_call["chmod", c_int](
     27         path_str.as_c_string_slice().unsafe_ptr(),
     28         c_int(_HYF_DIAGNOSTICS_DIR_MODE),
     29     )
     30 
     31 
     32 def _ensure_file_mode(handle: Int):
     33     _ = external_call["fchmod", c_int](
     34         c_int(handle), c_int(_HYF_DIAGNOSTICS_FILE_MODE)
     35     )
     36 
     37 
     38 def diagnostics_debug_override_dir_from_env() -> String:
     39     return getenv(_HYF_DIAGNOSTICS_DIR_ENV, "")
     40 
     41 
     42 def diagnostics_dir_for_runtime_paths(paths: RuntimePaths) -> String:
     43     return String(paths.diagnostics_dir)
     44 
     45 
     46 def effective_diagnostics_dir_for_runtime_paths(paths: RuntimePaths) -> String:
     47     var configured = diagnostics_debug_override_dir_from_env()
     48     if configured != "":
     49         return configured
     50     return diagnostics_dir_for_runtime_paths(paths)
     51 
     52 
     53 def effective_diagnostics_dir_from_process_startup() raises -> String:
     54     var startup_context = resolve_startup_context_from_process()
     55     return effective_diagnostics_dir_for_runtime_paths(startup_context.paths)
     56 
     57 
     58 def _diagnostic_log_path(diagnostics_dir: String) raises -> Path:
     59     var dir_path = Path(diagnostics_dir)
     60     makedirs(dir_path, mode=_HYF_DIAGNOSTICS_DIR_MODE, exist_ok=True)
     61     _ensure_directory_mode(dir_path)
     62     return dir_path / (
     63         _HYF_DIAGNOSTICS_FILE_PREFIX
     64         + String(_current_process_id())
     65         + _HYF_DIAGNOSTICS_FILE_SUFFIX
     66     )
     67 
     68 
     69 def append_internal_diagnostic(line: String, diagnostics_dir: String):
     70     try:
     71         var log_path = _diagnostic_log_path(diagnostics_dir)
     72         with open(log_path, "a") as log_file:
     73             _ensure_file_mode(log_file.handle)
     74             log_file.write(line)
     75     except:
     76         pass