MCPcopy Index your code
hub / github.com/Monibuca/engine / Run

Function Run

main.go:58–258  ·  view source on GitHub ↗

Run 启动Monibuca引擎,传入总的Context,可用于关闭所有

(ctx context.Context, conf any)

Source from the content-addressed store, hash-verified

56
57// Run 启动Monibuca引擎,传入总的Context,可用于关闭所有
58func Run(ctx context.Context, conf any) (err error) {
59 id, _ := machineid.ProtectedID("monibuca")
60 SysInfo.StartTime = time.Now()
61 SysInfo.Version = Engine.Version
62 Engine.Context = ctx
63 var cg map[string]map[string]any
64 switch v := conf.(type) {
65 case string:
66 if _, err = os.Stat(v); err != nil {
67 v = filepath.Join(ExecDir, v)
68 }
69 if ConfigRaw, err = os.ReadFile(v); err != nil {
70 log.Warn("read config file error:", err.Error())
71 } else {
72 log.Info("load config file:", v)
73 }
74 case []byte:
75 ConfigRaw = v
76 case map[string]map[string]any:
77 cg = v
78 }
79
80 if err = util.CreateShutdownScript(); err != nil {
81 log.Error("create shutdown script error:", err)
82 }
83
84 if err = os.MkdirAll(SettingDir, 0766); err != nil {
85 log.Error("create dir .m7s error:", err)
86 return
87 }
88 log.Info("Ⓜ starting engine:", Blink(Engine.Version))
89 if ConfigRaw != nil {
90 if err = yaml.Unmarshal(ConfigRaw, &cg); err != nil {
91 log.Error("parsing yml error:", err)
92 }
93 }
94 Engine.RawConfig.Parse(&EngineConfig.Engine, "GLOBAL")
95 if cg != nil {
96 Engine.RawConfig.ParseUserFile(cg["global"])
97 }
98 var logger log.Logger
99 log.LocaleLogger = logger.Lang(lang.Get(EngineConfig.LogLang))
100 if EngineConfig.LogLevel == "trace" {
101 log.Trace = true
102 log.LogLevel.SetLevel(zap.DebugLevel)
103 } else {
104 loglevel, err := zapcore.ParseLevel(EngineConfig.LogLevel)
105 if err != nil {
106 logger.Error("parse log level error:", zap.Error(err))
107 loglevel = zapcore.InfoLevel
108 }
109 log.LogLevel.SetLevel(loglevel)
110 }
111
112 Engine.Logger = log.LocaleLogger.Named("engine")
113
114 Engine.assign()
115 Engine.Logger.Debug("", zap.Any("config", EngineConfig))

Callers

nothing calls this directly

Calls 15

LangMethod · 0.95
ErrorMethod · 0.95
ResetMethod · 0.95
WriteStringMethod · 0.95
WarnFunction · 0.92
InfoFunction · 0.92
CreateShutdownScriptFunction · 0.92
ErrorFunction · 0.92
GetFunction · 0.92
ParseUserFileMethod · 0.80
ParseGlobalMethod · 0.80
ParseDefaultYamlMethod · 0.80

Tested by

no test coverage detected