node build fixed
This commit is contained in:
112
seanime-2.9.10/internal/server/server.go
Normal file
112
seanime-2.9.10/internal/server/server.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
golog "log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"seanime/internal/core"
|
||||
"seanime/internal/cron"
|
||||
"seanime/internal/handlers"
|
||||
"seanime/internal/updater"
|
||||
"seanime/internal/util"
|
||||
"seanime/internal/util/crashlog"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func startApp(embeddedLogo []byte) (*core.App, core.SeanimeFlags, *updater.SelfUpdater) {
|
||||
// Print the header
|
||||
core.PrintHeader()
|
||||
|
||||
// Get the flags
|
||||
flags := core.GetSeanimeFlags()
|
||||
|
||||
selfupdater := updater.NewSelfUpdater()
|
||||
|
||||
// Create the app instance
|
||||
app := core.NewApp(&core.ConfigOptions{
|
||||
DataDir: flags.DataDir,
|
||||
EmbeddedLogo: embeddedLogo,
|
||||
IsDesktopSidecar: flags.IsDesktopSidecar,
|
||||
}, selfupdater)
|
||||
|
||||
// Create log file
|
||||
logFilePath := filepath.Join(app.Config.Logs.Dir, fmt.Sprintf("seanime-%s.log", time.Now().Format("2006-01-02_15-04-05")))
|
||||
// Open the log file
|
||||
logFile, _ := os.OpenFile(
|
||||
logFilePath,
|
||||
os.O_APPEND|os.O_CREATE|os.O_WRONLY,
|
||||
0664,
|
||||
)
|
||||
|
||||
log.Logger = *app.Logger
|
||||
golog.SetOutput(app.Logger)
|
||||
util.SetupLoggerSignalHandling(logFile)
|
||||
crashlog.GlobalCrashLogger.SetLogDir(app.Config.Logs.Dir)
|
||||
|
||||
app.OnFlushLogs = func() {
|
||||
util.WriteGlobalLogBufferToFile(logFile)
|
||||
logFile.Sync()
|
||||
}
|
||||
|
||||
if !flags.Update {
|
||||
go func() {
|
||||
for {
|
||||
util.WriteGlobalLogBufferToFile(logFile)
|
||||
time.Sleep(5 * time.Second)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
return app, flags, selfupdater
|
||||
}
|
||||
|
||||
func startAppLoop(webFS *embed.FS, app *core.App, flags core.SeanimeFlags, selfupdater *updater.SelfUpdater) {
|
||||
updateMode := flags.Update
|
||||
|
||||
appLoop:
|
||||
for {
|
||||
switch updateMode {
|
||||
case true:
|
||||
|
||||
log.Log().Msg("Running in update mode")
|
||||
|
||||
// Print the header
|
||||
core.PrintHeader()
|
||||
|
||||
// Run the self-updater
|
||||
err := selfupdater.Run()
|
||||
if err != nil {
|
||||
}
|
||||
|
||||
log.Log().Msg("Shutting down in 10 seconds...")
|
||||
time.Sleep(10 * time.Second)
|
||||
|
||||
break appLoop
|
||||
case false:
|
||||
|
||||
// Create the echo app instance
|
||||
echoApp := core.NewEchoApp(app, webFS)
|
||||
|
||||
// Initialize the routes
|
||||
handlers.InitRoutes(app, echoApp)
|
||||
|
||||
// Run the server
|
||||
core.RunEchoServer(app, echoApp)
|
||||
|
||||
// Run the jobs in the background
|
||||
cron.RunJobs(app)
|
||||
|
||||
select {
|
||||
case <-selfupdater.Started():
|
||||
app.Cleanup()
|
||||
updateMode = true
|
||||
break
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user