Run 启动Monibuca引擎,传入总的Context,可用于关闭所有
(ctx context.Context, conf any)
| 56 | |
| 57 | // Run 启动Monibuca引擎,传入总的Context,可用于关闭所有 |
| 58 | func 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)) |
nothing calls this directly
no test coverage detected