refactor: improve zinit process handling

- Improved error handling in `get` method of Zinit struct.
- Changed the return type of `new()` function in `zinit_factory.v` to `!&Zinit`.
- Updated `zinit_global_manager` to hold references to `Zinit` instances.

Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
This commit is contained in:
Mahmoud Emad
2025-01-06 16:40:52 +02:00
parent a19867c00b
commit 288bfd54d8
2 changed files with 8 additions and 5 deletions

View File

@@ -91,8 +91,11 @@ fn (mut zinit Zinit) cmd_write(name string, cmd string, cat string, env map[stri
pub fn (mut zinit Zinit) get(name_ string) !ZProcess {
name := texttools.name_fix(name_)
// console.print_debug(zinit)
return zinit.processes[name] or { return error("cannot find process in zinit:'${name}'") }
if zinit.processes.keys().contains(name) {
return zinit.processes[name]
}
return error("cannot find process in zinit:'${name}'")
}
pub fn (mut zinit Zinit) exists(name_ string) bool {

View File

@@ -5,16 +5,16 @@ import freeflowuniverse.herolib.ui.console
import freeflowuniverse.herolib.osal
__global (
zinit_global_manager []Zinit
zinit_global_manager []&Zinit
)
pub fn new() !Zinit {
pub fn new() !&Zinit {
if zinit_global_manager.len == 0 {
mut z := Zinit{
path: pathlib.get_dir(path: '/etc/zinit', create: true)!
pathcmds: pathlib.get_dir(path: '/etc/zinit/cmds', create: true)!
}
zinit_global_manager << z
zinit_global_manager << &z
z.load()!
}
return zinit_global_manager[0]