...
This commit is contained in:
@@ -3,10 +3,10 @@
|
||||
import freeflowuniverse.herolib.core.generator.generic as generator
|
||||
import freeflowuniverse.herolib.core.pathlib
|
||||
|
||||
mut args := generator.GeneratorArgs{
|
||||
path: '~/code/github/freeflowuniverse/herolib/lib/clients'
|
||||
force: true
|
||||
}
|
||||
// mut args := generator.GeneratorArgs{
|
||||
// path: '~/code/github/freeflowuniverse/herolib/lib/clients'
|
||||
// force: true
|
||||
// }
|
||||
|
||||
// mut args2 := generator.GeneratorArgs{
|
||||
// path: '~/code/github/freeflowuniverse/herolib/lib/installers/lang/rust'
|
||||
@@ -14,9 +14,9 @@ mut args := generator.GeneratorArgs{
|
||||
// }
|
||||
// generator.scan(args2)!
|
||||
|
||||
// mut args := generator.GeneratorArgs{
|
||||
// path: '~/code/github/freeflowuniverse/herolib/lib/installers'
|
||||
// force: true
|
||||
// }
|
||||
mut args := generator.GeneratorArgs{
|
||||
path: '~/code/github/freeflowuniverse/herolib/lib/installers'
|
||||
force: true
|
||||
}
|
||||
|
||||
generator.scan(args)!
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
import freeflowuniverse.herolib.installers.net.mycelium_installer
|
||||
import freeflowuniverse.herolib.clients.mycelium
|
||||
|
||||
mut installer := mycelium_installer.get(create:true)!
|
||||
mut installer := mycelium_installer.get(create: true)!
|
||||
println(installer)
|
||||
|
||||
installer.start()!
|
||||
|
||||
$dbg;
|
||||
// $dbg;
|
||||
|
||||
mut r := mycelium.inspect()!
|
||||
println(r)
|
||||
|
||||
$dbg;
|
||||
// $dbg;
|
||||
|
||||
mut client := mycelium.get()!
|
||||
|
||||
|
||||
@@ -57,9 +57,9 @@ pub fn get_dir(args_ GetArgs) !Path {
|
||||
if p2.exist == .no {
|
||||
if args.create {
|
||||
os.mkdir_all(p2.absolute()) or {
|
||||
print_backtrace()
|
||||
return error('cannot create path ${p2}, ${err}')
|
||||
} // Make sure that all the needed paths created
|
||||
print_backtrace()
|
||||
return error('cannot create path ${p2}, ${err}')
|
||||
} // Make sure that all the needed paths created
|
||||
p2.check()
|
||||
}
|
||||
return p2
|
||||
@@ -101,9 +101,9 @@ pub fn get_file(args_ GetArgs) !Path {
|
||||
parent_.check()
|
||||
if parent_.exist == .no {
|
||||
os.mkdir_all(parent_.path) or {
|
||||
print_backtrace()
|
||||
return error('cannot create path:${args.path}')
|
||||
}
|
||||
print_backtrace()
|
||||
return error('cannot create path:${args.path}')
|
||||
}
|
||||
}
|
||||
if p2.exist == .no || args.empty {
|
||||
os.write_file(args.path, '') or {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&CometBFT {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&CometBFT {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&MeilisearchInstaller {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&MeilisearchInstaller {
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
postgresql_global map[string]&Postgresql
|
||||
postgresql_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&Postgresql {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&Postgresql {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&QDrant {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&QDrant {
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
zerodb_global map[string]&ZeroDB
|
||||
zerodb_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&ZeroDB {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&ZeroDB {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
zerofs_global map[string]&ZeroFS
|
||||
zerofs_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
coredns_global map[string]&CoreDNS
|
||||
coredns_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&CoreDNS {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&CoreDNS {
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
gitea_global map[string]&GiteaServer
|
||||
gitea_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&GiteaServer {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&GiteaServer {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&LivekitServer {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&LivekitServer {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
zinit_installer_global map[string]&ZinitInstaller
|
||||
zinit_installer_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
golang_global map[string]&GolangInstaller
|
||||
golang_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
nodejs_global map[string]&NodeJS
|
||||
nodejs_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
python_global map[string]&PythonInstaller
|
||||
python_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
rust_global map[string]&RustInstaller
|
||||
rust_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,7 +5,6 @@ import freeflowuniverse.herolib.ui.console
|
||||
import freeflowuniverse.herolib.core.texttools
|
||||
import freeflowuniverse.herolib.core
|
||||
import freeflowuniverse.herolib.core.pathlib
|
||||
import freeflowuniverse.herolib.installers.infra.zinit_installer
|
||||
import freeflowuniverse.herolib.clients.mycelium
|
||||
import freeflowuniverse.herolib.develop.gittools
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
@@ -20,15 +19,14 @@ fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut peers_str := installer.peers.join(' ')
|
||||
mut tun_name := 'tun${installer.tun_nr}'
|
||||
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'mycelium'
|
||||
startuptype: .zinit
|
||||
cmd: 'mycelium --key-file ${osal.hero_path()!}/cfg/priv_key.bin --peers ${peers_str} --tun-name ${tun_name}'
|
||||
env: {
|
||||
'HOME': os.home_dir()
|
||||
env: {
|
||||
'HOME': os.home_dir()
|
||||
}
|
||||
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&MyceliumInstaller {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&MyceliumInstaller {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
yggdrasil_global map[string]&YggdrasilInstaller
|
||||
yggdrasil_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -10,8 +10,7 @@ import os
|
||||
|
||||
fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut res := []startupmanager.ZProcessNewArgs{}
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'actrunner'
|
||||
cmd: 'actrunner daemon'
|
||||
startuptype: .zinit
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
actrunner_global map[string]&ActRunner
|
||||
actrunner_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
b2_global map[string]&BackBase
|
||||
b2_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -14,8 +14,7 @@ fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut res := []startupmanager.ZProcessNewArgs{}
|
||||
mut cfg := get()!
|
||||
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'dagu'
|
||||
cmd: 'dagu server'
|
||||
env: {
|
||||
@@ -24,8 +23,7 @@ fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
}
|
||||
}
|
||||
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'dagu_scheduler'
|
||||
cmd: 'dagu scheduler'
|
||||
env: {
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
daguserver_global map[string]&DaguInstaller
|
||||
daguserver_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&DaguInstaller {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&DaguInstaller {
|
||||
@@ -53,11 +58,11 @@ pub fn get(args ArgsGet) !&DaguInstaller {
|
||||
|
||||
// register the config for the future
|
||||
pub fn set(o DaguInstaller) ! {
|
||||
set_in_mem(o)!
|
||||
daguserver_default = o.name
|
||||
mut o2 := set_in_mem(o)!
|
||||
daguserver_default = o2.name
|
||||
mut context := base.context()!
|
||||
mut r := context.redis()!
|
||||
r.hset('context:daguserver', o.name, json.encode(o))!
|
||||
r.hset('context:daguserver', o2.name, json.encode(o2))!
|
||||
}
|
||||
|
||||
// does the config exists?
|
||||
@@ -106,10 +111,11 @@ pub fn list(args ArgsList) ![]&DaguInstaller {
|
||||
}
|
||||
|
||||
// only sets in mem, does not set as config
|
||||
fn set_in_mem(o DaguInstaller) ! {
|
||||
fn set_in_mem(o DaguInstaller) !DaguInstaller {
|
||||
mut o2 := obj_init(o)!
|
||||
daguserver_global[o.name] = &o2
|
||||
daguserver_default = o.name
|
||||
daguserver_global[o2.name] = &o2
|
||||
daguserver_default = o2.name
|
||||
return o2
|
||||
}
|
||||
|
||||
pub fn play(mut plbook PlayBook) ! {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
fungistor_global map[string]&FungiStor
|
||||
fungistor_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -12,8 +12,7 @@ import json
|
||||
|
||||
fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut res := []startupmanager.ZProcessNewArgs{}
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'garage_s3'
|
||||
cmd: 'garage_s3 -c /var/garage/config.toml server'
|
||||
startuptype: .zinit
|
||||
|
||||
@@ -27,7 +27,7 @@ pub fn new(args ArgsGet) !&GarageS3 {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&GarageS3 {
|
||||
@@ -58,11 +58,11 @@ pub fn get(args ArgsGet) !&GarageS3 {
|
||||
|
||||
// register the config for the future
|
||||
pub fn set(o GarageS3) ! {
|
||||
set_in_mem(o)!
|
||||
garage_s3_default = o.name
|
||||
mut o2 := set_in_mem(o)!
|
||||
garage_s3_default = o2.name
|
||||
mut context := base.context()!
|
||||
mut r := context.redis()!
|
||||
r.hset('context:garage_s3', o.name, json.encode(o))!
|
||||
r.hset('context:garage_s3', o2.name, json.encode(o2))!
|
||||
}
|
||||
|
||||
// does the config exists?
|
||||
@@ -111,10 +111,11 @@ pub fn list(args ArgsList) ![]&GarageS3 {
|
||||
}
|
||||
|
||||
// only sets in mem, does not set as config
|
||||
fn set_in_mem(o GarageS3) ! {
|
||||
fn set_in_mem(o GarageS3) !GarageS3 {
|
||||
mut o2 := obj_init(o)!
|
||||
garage_s3_global[o.name] = &o2
|
||||
garage_s3_default = o.name
|
||||
garage_s3_global[o2.name] = &o2
|
||||
garage_s3_default = o2.name
|
||||
return o2
|
||||
}
|
||||
|
||||
pub fn play(mut plbook PlayBook) ! {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
grafana_global map[string]&Grafana
|
||||
grafana_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
prometheus_global map[string]&Prometheus
|
||||
prometheus_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -26,7 +26,7 @@ pub fn new(args ArgsGet) !&RClone {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&RClone {
|
||||
@@ -57,11 +57,11 @@ pub fn get(args ArgsGet) !&RClone {
|
||||
|
||||
// register the config for the future
|
||||
pub fn set(o RClone) ! {
|
||||
set_in_mem(o)!
|
||||
rclone_default = o.name
|
||||
mut o2 := set_in_mem(o)!
|
||||
rclone_default = o2.name
|
||||
mut context := base.context()!
|
||||
mut r := context.redis()!
|
||||
r.hset('context:rclone', o.name, json.encode(o))!
|
||||
r.hset('context:rclone', o2.name, json.encode(o2))!
|
||||
}
|
||||
|
||||
// does the config exists?
|
||||
@@ -110,10 +110,11 @@ pub fn list(args ArgsList) ![]&RClone {
|
||||
}
|
||||
|
||||
// only sets in mem, does not set as config
|
||||
fn set_in_mem(o RClone) ! {
|
||||
fn set_in_mem(o RClone) !RClone {
|
||||
mut o2 := obj_init(o)!
|
||||
rclone_global[o.name] = &o2
|
||||
rclone_default = o.name
|
||||
rclone_global[o2.name] = &o2
|
||||
rclone_default = o2.name
|
||||
return o2
|
||||
}
|
||||
|
||||
pub fn play(mut plbook PlayBook) ! {
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
restic_global map[string]&Restic
|
||||
restic_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
s3_global map[string]&S3Installer
|
||||
s3_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
griddriver_global map[string]&GridDriverInstaller
|
||||
griddriver_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
cloudhypervisor_global map[string]&CloudHypervisor
|
||||
cloudhypervisor_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -8,8 +8,7 @@ import freeflowuniverse.herolib.installers.ulist
|
||||
|
||||
fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut res := []startupmanager.ZProcessNewArgs{}
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'docker'
|
||||
cmd: 'dockerd'
|
||||
}
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
pacman_global map[string]&PacmanInstaller
|
||||
pacman_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
podman_global map[string]&PodmanInstaller
|
||||
podman_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
youki_global map[string]&YoukiInstaller
|
||||
youki_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -5,6 +5,11 @@ import freeflowuniverse.herolib.ui.console
|
||||
import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
|
||||
__global (
|
||||
bun_global map[string]&Bun
|
||||
bun_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
imagemagick_global map[string]&ImageMagick
|
||||
imagemagick_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -6,6 +6,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
lighttpd_global map[string]&LightHttpdInstaller
|
||||
lighttpd_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
|
||||
@@ -11,8 +11,7 @@ import os
|
||||
fn startupcmd() ![]startupmanager.ZProcessNewArgs {
|
||||
mut installer := get()!
|
||||
mut res := []startupmanager.ZProcessNewArgs{}
|
||||
res << startupmanager.ZProcessNewArgs
|
||||
{
|
||||
res << startupmanager.ZProcessNewArgs{
|
||||
name: 'traefik'
|
||||
cmd: 'traefik'
|
||||
}
|
||||
|
||||
@@ -7,6 +7,11 @@ import json
|
||||
import freeflowuniverse.herolib.osal.startupmanager
|
||||
import time
|
||||
|
||||
__global (
|
||||
traefik_global map[string]&TraefikServer
|
||||
traefik_default string
|
||||
)
|
||||
|
||||
/////////FACTORY
|
||||
|
||||
@[params]
|
||||
@@ -22,7 +27,7 @@ pub fn new(args ArgsGet) !&TraefikServer {
|
||||
name: args.name
|
||||
}
|
||||
set(obj)!
|
||||
return &obj
|
||||
return get(name: args.name)!
|
||||
}
|
||||
|
||||
pub fn get(args ArgsGet) !&TraefikServer {
|
||||
@@ -53,11 +58,11 @@ pub fn get(args ArgsGet) !&TraefikServer {
|
||||
|
||||
// register the config for the future
|
||||
pub fn set(o TraefikServer) ! {
|
||||
set_in_mem(o)!
|
||||
traefik_default = o.name
|
||||
mut o2 := set_in_mem(o)!
|
||||
traefik_default = o2.name
|
||||
mut context := base.context()!
|
||||
mut r := context.redis()!
|
||||
r.hset('context:traefik', o.name, json.encode(o))!
|
||||
r.hset('context:traefik', o2.name, json.encode(o2))!
|
||||
}
|
||||
|
||||
// does the config exists?
|
||||
@@ -106,10 +111,11 @@ pub fn list(args ArgsList) ![]&TraefikServer {
|
||||
}
|
||||
|
||||
// only sets in mem, does not set as config
|
||||
fn set_in_mem(o TraefikServer) ! {
|
||||
fn set_in_mem(o TraefikServer) !TraefikServer {
|
||||
mut o2 := obj_init(o)!
|
||||
traefik_global[o.name] = &o2
|
||||
traefik_default = o.name
|
||||
traefik_global[o2.name] = &o2
|
||||
traefik_default = o2.name
|
||||
return o2
|
||||
}
|
||||
|
||||
pub fn play(mut plbook PlayBook) ! {
|
||||
|
||||
@@ -134,7 +134,6 @@ pub fn (mut self ScreensFactory) get(name string) !Screen {
|
||||
}
|
||||
|
||||
pub fn (mut self ScreensFactory) start(name string) ! {
|
||||
|
||||
mut s := self.get(name) or {
|
||||
return error("can't start screen with name:${name}, couldn't find.\nScreens found.\n${self.str()}")
|
||||
}
|
||||
|
||||
@@ -28,12 +28,12 @@ pub mut:
|
||||
|
||||
fn startup_manager_type_get(c string) StartupManagerType {
|
||||
match c {
|
||||
"unknown" { return .unknown }
|
||||
"screen" { return .screen }
|
||||
"zinit" { return .zinit }
|
||||
"tmux" { return .tmux }
|
||||
"systemd" { return .systemd }
|
||||
"auto" { return .auto }
|
||||
else { return .unknown }
|
||||
'unknown' { return .unknown }
|
||||
'screen' { return .screen }
|
||||
'zinit' { return .zinit }
|
||||
'tmux' { return .tmux }
|
||||
'systemd' { return .systemd }
|
||||
'auto' { return .auto }
|
||||
else { return .unknown }
|
||||
}
|
||||
}
|
||||
@@ -6,32 +6,31 @@ import freeflowuniverse.herolib.osal.systemd
|
||||
// import freeflowuniverse.herolib.osal.zinit // Comment or remove this line
|
||||
import freeflowuniverse.herolib.clients.zinit // Add this line
|
||||
|
||||
|
||||
pub struct StartupManager {
|
||||
pub mut:
|
||||
cat StartupManagerType
|
||||
}
|
||||
|
||||
pub fn get(cat StartupManagerType) !StartupManager {
|
||||
console.print_debug('startupmanager get ${cat}')
|
||||
mut sm := StartupManager{
|
||||
cat: cat
|
||||
}
|
||||
if sm.cat == .auto {
|
||||
// Try to get a ZinitRPC client and check if it can discover RPC methods.
|
||||
// This implies the zinit daemon is running and accessible via its socket.
|
||||
mut zinit_client_test := zinit.get(create: true)! // 'create:true' ensures a client object is initiated even if the socket isn't active.
|
||||
if _ := zinit_client_test.rpc_discover() {
|
||||
sm.cat = .zinit
|
||||
} else {
|
||||
sm.cat = .screen
|
||||
}
|
||||
}
|
||||
if sm.cat == .unknown {
|
||||
print_backtrace()
|
||||
return error("can't determine startup manager type, need to be a known one.")
|
||||
}
|
||||
return sm
|
||||
console.print_debug('startupmanager get ${cat}')
|
||||
mut sm := StartupManager{
|
||||
cat: cat
|
||||
}
|
||||
if sm.cat == .auto {
|
||||
// Try to get a ZinitRPC client and check if it can discover RPC methods.
|
||||
// This implies the zinit daemon is running and accessible via its socket.
|
||||
mut zinit_client_test := zinit.get(create: true)! // 'create:true' ensures a client object is initiated even if the socket isn't active.
|
||||
if _ := zinit_client_test.rpc_discover() {
|
||||
sm.cat = .zinit
|
||||
} else {
|
||||
sm.cat = .screen
|
||||
}
|
||||
}
|
||||
if sm.cat == .unknown {
|
||||
print_backtrace()
|
||||
return error("can't determine startup manager type, need to be a known one.")
|
||||
}
|
||||
return sm
|
||||
}
|
||||
|
||||
// launch a new process
|
||||
@@ -70,40 +69,40 @@ pub fn (mut sm StartupManager) new(args ZProcessNewArgs) ! {
|
||||
)!
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit start ${args.name} using clients.zinit')
|
||||
// Get the Zinit RPC client instance.
|
||||
// We assume it's properly configured (e.g., socket_path) via its factory setup.
|
||||
mut zinit_client := zinit.get(create: true)!
|
||||
console.print_debug('zinit start ${args.name} using clients.zinit')
|
||||
// Get the Zinit RPC client instance.
|
||||
// We assume it's properly configured (e.g., socket_path) via its factory setup.
|
||||
mut zinit_client := zinit.get(create: true)!
|
||||
|
||||
// Map ZProcessNewArgs to zinit.ServiceConfig
|
||||
mut service_config := zinit.ServiceConfig{
|
||||
exec: args.cmd
|
||||
test: args.cmd_test // Direct mapping
|
||||
oneshot: args.oneshot // Use the oneshot flag directly
|
||||
after: args.after // Direct mapping
|
||||
// log: "" // Default to zinit's default or add a field to ZProcessNewArgs
|
||||
env: args.env // Direct mapping
|
||||
dir: args.workdir // Direct mapping
|
||||
shutdown_timeout: 0 // Default, or add to ZProcessNewArgs if needed
|
||||
}
|
||||
// Map ZProcessNewArgs to zinit.ServiceConfig
|
||||
mut service_config := zinit.ServiceConfig{
|
||||
exec: args.cmd
|
||||
test: args.cmd_test // Direct mapping
|
||||
oneshot: args.oneshot // Use the oneshot flag directly
|
||||
after: args.after // Direct mapping
|
||||
// log: "" // Default to zinit's default or add a field to ZProcessNewArgs
|
||||
env: args.env // Direct mapping
|
||||
dir: args.workdir // Direct mapping
|
||||
shutdown_timeout: 0 // Default, or add to ZProcessNewArgs if needed
|
||||
}
|
||||
|
||||
// Create the service configuration file in zinit
|
||||
zinit_client.service_create(args.name, service_config) or {
|
||||
return error('Failed to create zinit service ${args.name}: ${err}')
|
||||
}
|
||||
// Create the service configuration file in zinit
|
||||
zinit_client.service_create(args.name, service_config) or {
|
||||
return error('Failed to create zinit service ${args.name}: ${err}')
|
||||
}
|
||||
|
||||
// If 'start' is true, also monitor and start the service
|
||||
if args.start {
|
||||
// Monitor loads the config, if it's new it starts it.
|
||||
// If the service is already managed, this will bring it back up.
|
||||
zinit_client.service_monitor(args.name) or {
|
||||
return error('Failed to monitor zinit service ${args.name}: ${err}')
|
||||
}
|
||||
// Explicitly start the service (useful for oneshot services or if not already active)
|
||||
zinit_client.service_start(args.name) or {
|
||||
return error('Failed to start zinit service ${args.name}: ${err}')
|
||||
}
|
||||
}
|
||||
// If 'start' is true, also monitor and start the service
|
||||
if args.start {
|
||||
// Monitor loads the config, if it's new it starts it.
|
||||
// If the service is already managed, this will bring it back up.
|
||||
zinit_client.service_monitor(args.name) or {
|
||||
return error('Failed to monitor zinit service ${args.name}: ${err}')
|
||||
}
|
||||
// Explicitly start the service (useful for oneshot services or if not already active)
|
||||
zinit_client.service_start(args.name) or {
|
||||
return error('Failed to start zinit service ${args.name}: ${err}')
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen & systemd for now: ${mycat}')
|
||||
@@ -128,11 +127,11 @@ pub fn (mut sm StartupManager) start(name string) ! {
|
||||
}
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit process start ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
zinit_client.service_start(name) or {
|
||||
return error('Failed to start zinit service ${name}: ${err}')
|
||||
}
|
||||
console.print_debug('zinit process start ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
zinit_client.service_start(name) or {
|
||||
return error('Failed to start zinit service ${name}: ${err}')
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen for now')
|
||||
@@ -157,11 +156,11 @@ pub fn (mut sm StartupManager) stop(name string) ! {
|
||||
}
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit stop ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
zinit_client.service_stop(name) or {
|
||||
return error('Failed to stop zinit service ${name}: ${err}')
|
||||
}
|
||||
console.print_debug('zinit stop ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
zinit_client.service_stop(name) or {
|
||||
return error('Failed to stop zinit service ${name}: ${err}')
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen for now')
|
||||
@@ -182,15 +181,15 @@ pub fn (mut sm StartupManager) restart(name string) ! {
|
||||
systemdprocess.restart()!
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit restart ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
// Zinit's 'start' method can act as a restart if the service is already running.
|
||||
// For a clean restart, you might explicitly stop and then start, but service_start
|
||||
// in Zinit is generally idempotent and will manage the state.
|
||||
zinit_client.service_stop(name) or { /* ignore if already stopped */ }
|
||||
zinit_client.service_start(name) or {
|
||||
return error('Failed to restart zinit service ${name}: ${err}')
|
||||
}
|
||||
console.print_debug('zinit restart ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
// Zinit's 'start' method can act as a restart if the service is already running.
|
||||
// For a clean restart, you might explicitly stop and then start, but service_start
|
||||
// in Zinit is generally idempotent and will manage the state.
|
||||
zinit_client.service_stop(name) or {}
|
||||
zinit_client.service_start(name) or {
|
||||
return error('Failed to restart zinit service ${name}: ${err}')
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen for now')
|
||||
@@ -213,14 +212,14 @@ pub fn (mut sm StartupManager) delete(name string) ! {
|
||||
systemdprocess.delete()!
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit delete ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
// To properly delete, first stop monitoring and then stop the service, before deleting the configuration.
|
||||
zinit_client.service_forget(name) or { }
|
||||
zinit_client.service_stop(name) or {}
|
||||
zinit_client.service_delete(name) or {
|
||||
return error('Failed to delete zinit service ${name}: ${err}')
|
||||
}
|
||||
console.print_debug('zinit delete ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()! // Get the already configured zinit client
|
||||
// To properly delete, first stop monitoring and then stop the service, before deleting the configuration.
|
||||
zinit_client.service_forget(name) or {}
|
||||
zinit_client.service_stop(name) or {}
|
||||
zinit_client.service_delete(name) or {
|
||||
return error('Failed to delete zinit service ${name}: ${err}')
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen & systemd for now ${sm.cat}')
|
||||
@@ -261,25 +260,42 @@ pub fn (mut sm StartupManager) status(name string) !ProcessStatus {
|
||||
return s
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit status ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// Attempt to get the service status. Handle "Service not found" as .unknown.
|
||||
status_info := zinit_client.service_status(name) or { err_val := err.msg().to_lower(); if err_val.contains('service not found') { return .unknown } else { return error('Failed to get zinit service status: ${err}') } }
|
||||
console.print_debug('zinit status ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// Attempt to get the service status. Handle "Service not found" as .unknown.
|
||||
status_info := zinit_client.service_status(name) or {
|
||||
err_val := err.msg().to_lower()
|
||||
if err_val.contains('service not found') {
|
||||
return .unknown
|
||||
} else {
|
||||
return error('Failed to get zinit service status: ${err}')
|
||||
}
|
||||
}
|
||||
|
||||
// Map Zinit's ServiceStatus.state to StartupManager's ProcessStatus
|
||||
match status_info.state.to_lower() {
|
||||
'running', 'success' { return .active } // Zinit considers 'success' for one-shot tasks as complete & successful
|
||||
'error', 'broken' { return .failed }
|
||||
'starting' { return .activating }
|
||||
'stopping' { return .deactivating }
|
||||
// Zinit has other states like 'paused', 'restarting', 'waiting', etc.
|
||||
// We'll map them to closest equivalents or .unknown for now.
|
||||
'stopped', 'restarted', 'forgotten' { return .inactive } // 'restarted' here means it's about to be 'running' again, but in the context of a single status check it might be transient. For simplicity map it to inactive here.
|
||||
else {
|
||||
console.print_debug('Unknown Zinit state for ${name}: ${status_info.state}')
|
||||
return .unknown
|
||||
}
|
||||
}
|
||||
// Map Zinit's ServiceStatus.state to StartupManager's ProcessStatus
|
||||
match status_info.state.to_lower() {
|
||||
'running', 'success' {
|
||||
return .active
|
||||
} // Zinit considers 'success' for one-shot tasks as complete & successful
|
||||
'error', 'broken' {
|
||||
return .failed
|
||||
}
|
||||
'starting' {
|
||||
return .activating
|
||||
}
|
||||
'stopping' {
|
||||
return .deactivating
|
||||
}
|
||||
// Zinit has other states like 'paused', 'restarting', 'waiting', etc.
|
||||
// We'll map them to closest equivalents or .unknown for now.
|
||||
'stopped', 'restarted', 'forgotten' {
|
||||
return .inactive
|
||||
} // 'restarted' here means it's about to be 'running' again, but in the context of a single status check it might be transient. For simplicity map it to inactive here.
|
||||
else {
|
||||
console.print_debug('Unknown Zinit state for ${name}: ${status_info.state}')
|
||||
return .unknown
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen & systemd for now ${sm.cat}')
|
||||
@@ -305,14 +321,14 @@ pub fn (mut sm StartupManager) output(name string) !string {
|
||||
return systemd.journalctl(service: name)!
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit output ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// Calls stream_current_logs with a name filter.
|
||||
logs := zinit_client.stream_current_logs(zinit.LogParams{name: name}) or {
|
||||
return error('Failed to get zinit logs for ${name}: ${err}')
|
||||
}
|
||||
return logs.join('\n')
|
||||
}
|
||||
console.print_debug('zinit output ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// Calls stream_current_logs with a name filter.
|
||||
logs := zinit_client.stream_current_logs(zinit.LogParams{ name: name }) or {
|
||||
return error('Failed to get zinit logs for ${name}: ${err}')
|
||||
}
|
||||
return logs.join('\n')
|
||||
}
|
||||
else {
|
||||
panic('to implement, startup manager only support screen & systemd for now ${sm.cat}')
|
||||
}
|
||||
@@ -320,36 +336,35 @@ pub fn (mut sm StartupManager) output(name string) !string {
|
||||
}
|
||||
|
||||
pub fn (mut sm StartupManager) exists(name string) !bool {
|
||||
|
||||
if sm.cat == .unknown {
|
||||
// If type is auto/unknown, try to determine.
|
||||
mut zinit_client_test := zinit.get(create: true)!
|
||||
if _ := zinit_client_test.rpc_discover() {
|
||||
sm.cat = .zinit
|
||||
} else {
|
||||
sm.cat = .screen
|
||||
}
|
||||
}
|
||||
match sm.cat {
|
||||
.screen {
|
||||
mut scr := screen.new(reset: false) or { panic("can't get screen") }
|
||||
return scr.exists(name)
|
||||
}
|
||||
.systemd {
|
||||
// console.print_debug("exists sm systemd ${name}")
|
||||
mut systemdfactory := systemd.new()!
|
||||
return systemdfactory.exists(name)
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit exists ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
zinit_client.service_status(name) or {return false}
|
||||
return true
|
||||
}
|
||||
else {
|
||||
panic('to implement. startup manager only support screen & systemd for now ${sm.cat}')
|
||||
}
|
||||
}
|
||||
// If type is auto/unknown, try to determine.
|
||||
mut zinit_client_test := zinit.get(create: true)!
|
||||
if _ := zinit_client_test.rpc_discover() {
|
||||
sm.cat = .zinit
|
||||
} else {
|
||||
sm.cat = .screen
|
||||
}
|
||||
}
|
||||
match sm.cat {
|
||||
.screen {
|
||||
mut scr := screen.new(reset: false) or { panic("can't get screen") }
|
||||
return scr.exists(name)
|
||||
}
|
||||
.systemd {
|
||||
// console.print_debug("exists sm systemd ${name}")
|
||||
mut systemdfactory := systemd.new()!
|
||||
return systemdfactory.exists(name)
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit exists ${name} using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
zinit_client.service_status(name) or { return false }
|
||||
return true
|
||||
}
|
||||
else {
|
||||
panic('to implement. startup manager only support screen & systemd for now ${sm.cat}')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// list all services as known to the startup manager
|
||||
@@ -364,18 +379,18 @@ pub fn (mut sm StartupManager) list() ![]string {
|
||||
return systemdfactory.names()
|
||||
}
|
||||
.zinit {
|
||||
console.print_debug('zinit list using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// service_list returns a map[string]string (name -> state). We only need the names.
|
||||
service_map := zinit_client.service_list() or {
|
||||
return error('Failed to list zinit services: ${err}')
|
||||
}
|
||||
mut names := []string{}
|
||||
for name in service_map.keys() {
|
||||
names << name
|
||||
}
|
||||
return names
|
||||
}
|
||||
console.print_debug('zinit list using clients.zinit')
|
||||
mut zinit_client := zinit.get()!
|
||||
// service_list returns a map[string]string (name -> state). We only need the names.
|
||||
service_map := zinit_client.service_list() or {
|
||||
return error('Failed to list zinit services: ${err}')
|
||||
}
|
||||
mut names := []string{}
|
||||
for name in service_map.keys() {
|
||||
names << name
|
||||
}
|
||||
return names
|
||||
}
|
||||
else {
|
||||
panic('to implement. startup manager only support screen & systemd for now: ${sm.cat}')
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
module jsonrpcmodel
|
||||
|
||||
|
||||
|
||||
// OpenRPCSpec represents the OpenRPC specification structure
|
||||
pub struct OpenRPCSpec {
|
||||
pub mut:
|
||||
|
||||
Reference in New Issue
Block a user