From 9faf8f802f993736b1b9d583af606fb7000cc322 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 5 May 2024 17:54:32 +0800 Subject: [PATCH] chore: Update engine.Load calls with additional options --- cmd/dump.go | 2 +- cmd/migrate.go | 2 +- cmd/restore.go | 2 +- cmd/run.go | 2 +- cmd/socket.go | 2 +- cmd/start.go | 2 +- cmd/studio/run.go | 2 +- cmd/sui/build.go | 2 +- cmd/sui/watch.go | 2 +- engine/load.go | 24 ++++++++++++++++-------- engine/load_test.go | 12 ++++++------ service/service_test.go | 2 +- service/watch.go | 2 +- service/watch_test.go | 2 +- setup/handler.go | 2 +- setup/install.go | 5 ++++- 16 files changed, 39 insertions(+), 28 deletions(-) diff --git a/cmd/dump.go b/cmd/dump.go index 5e3e6169..eb820808 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -57,7 +57,7 @@ var dumpCmd = &cobra.Command{ } // Load model - err = engine.Load(config.Conf) + err = engine.Load(config.Conf, engine.LoadOption{Action: "dump"}) if err != nil { fmt.Println(color.RedString(L("Fatal: %s"), err.Error())) os.Exit(1) diff --git a/cmd/migrate.go b/cmd/migrate.go index fcc59804..e8bf2de7 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -36,7 +36,7 @@ var migrateCmd = &cobra.Command{ } // 加载数据模型 - err := engine.Load(config.Conf) + err := engine.Load(config.Conf, engine.LoadOption{Action: "migrate"}) if err != nil { fmt.Println(color.RedString(L("Fatal: %s"), err.Error())) os.Exit(1) diff --git a/cmd/restore.go b/cmd/restore.go index 01bf146f..56592dca 100644 --- a/cmd/restore.go +++ b/cmd/restore.go @@ -59,7 +59,7 @@ var restoreCmd = &cobra.Command{ }) // 加载数据模型 - err = engine.Load(config.Conf) + err = engine.Load(config.Conf, engine.LoadOption{Action: "restore"}) if err != nil { fmt.Println(color.RedString(L("Fatal: %s"), err.Error())) os.Exit(1) diff --git a/cmd/run.go b/cmd/run.go index 803d5bce..3947b2f1 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -56,7 +56,7 @@ var runCmd = &cobra.Command{ return } - err := engine.Load(cfg) + err := engine.Load(cfg, engine.LoadOption{Action: "run"}) if err != nil { if !runSilent { color.Red(L("Engine: %s\n"), err.Error()) diff --git a/cmd/socket.go b/cmd/socket.go index 6a9b140f..7ab2e5ef 100644 --- a/cmd/socket.go +++ b/cmd/socket.go @@ -32,7 +32,7 @@ var socketCmd = &cobra.Command{ Boot() cfg := config.Conf cfg.Session.IsCLI = true - engine.Load(cfg) + engine.Load(cfg, engine.LoadOption{Action: "socket"}) if len(args) < 1 { fmt.Println(color.RedString(L("Not enough arguments"))) fmt.Println(color.WhiteString(share.BUILDNAME + " help")) diff --git a/cmd/start.go b/cmd/start.go index 1fa505b0..a81ebc70 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -68,7 +68,7 @@ var startCmd = &cobra.Command{ } // load the application engine - err := engine.Load(config.Conf) + err := engine.Load(config.Conf, engine.LoadOption{Action: "start"}) if err != nil { fmt.Println(color.RedString(L("Load: %s"), err.Error())) os.Exit(1) diff --git a/cmd/studio/run.go b/cmd/studio/run.go index 417a4237..02690d84 100644 --- a/cmd/studio/run.go +++ b/cmd/studio/run.go @@ -43,7 +43,7 @@ var RunCmd = &cobra.Command{ return } - err := engine.Load(cfg) + err := engine.Load(cfg, engine.LoadOption{Action: "studio.run"}) if err != nil { fmt.Println(color.RedString(L("Engine: %s"), err.Error())) } diff --git a/cmd/sui/build.go b/cmd/sui/build.go index 4506eedb..b8938406 100644 --- a/cmd/sui/build.go +++ b/cmd/sui/build.go @@ -30,7 +30,7 @@ var BuildCmd = &cobra.Command{ Boot() cfg := config.Conf - err := engine.Load(cfg) + err := engine.Load(cfg, engine.LoadOption{Action: "sui.build"}) if err != nil { fmt.Fprintln(os.Stderr, color.RedString(err.Error())) return diff --git a/cmd/sui/watch.go b/cmd/sui/watch.go index 82ed84ee..c41d3b4f 100644 --- a/cmd/sui/watch.go +++ b/cmd/sui/watch.go @@ -40,7 +40,7 @@ var WatchCmd = &cobra.Command{ Boot() cfg := config.Conf - err := engine.Load(cfg) + err := engine.Load(cfg, engine.LoadOption{Action: "sui.watch"}) if err != nil { fmt.Fprintln(os.Stderr, color.RedString(err.Error())) return diff --git a/engine/load.go b/engine/load.go index 0468607c..32e1754a 100644 --- a/engine/load.go +++ b/engine/load.go @@ -39,8 +39,15 @@ import ( "github.com/yaoapp/yao/widgets" ) +// LoadOption the load option +type LoadOption struct { + Action string `json:"action"` + IgnoredAfterLoad bool `json:"ignoredAfterLoad"` + IsReload bool `json:"reload"` +} + // Load application engine -func Load(cfg config.Config) (err error) { +func Load(cfg config.Config, options LoadOption) (err error) { defer func() { err = exception.Catch(recover()) }() exception.Mode = cfg.Mode @@ -219,8 +226,8 @@ func Load(cfg config.Config) (err error) { } // Execute AfterLoad Process if exists - if share.App.AfterLoad != "" { - p, err := process.Of(share.App.AfterLoad, false) + if share.App.AfterLoad != "" && !options.IgnoredAfterLoad { + p, err := process.Of(share.App.AfterLoad, options) if err != nil { printErr(cfg.Mode, "AfterLoad", err) return err @@ -275,7 +282,7 @@ func Unload() (err error) { } // Reload the application engine -func Reload(cfg config.Config) (err error) { +func Reload(cfg config.Config, options LoadOption) (err error) { defer func() { err = exception.Catch(recover()) }() exception.Mode = cfg.Mode @@ -412,8 +419,9 @@ func Reload(cfg config.Config) (err error) { } // Execute AfterLoad Process if exists - if share.App.AfterLoad != "" { - p, err := process.Of(share.App.AfterLoad, true) + if share.App.AfterLoad != "" && !options.IgnoredAfterLoad { + options.IsReload = true + p, err := process.Of(share.App.AfterLoad, options) if err != nil { printErr(cfg.Mode, "AfterLoad", err) return err @@ -430,12 +438,12 @@ func Reload(cfg config.Config) (err error) { } // Restart the application engine -func Restart(cfg config.Config) error { +func Restart(cfg config.Config, options LoadOption) error { err := Unload() if err != nil { return err } - return Load(cfg) + return Load(cfg, options) } // loadApp load the application from bindata / pkg / disk diff --git a/engine/load_test.go b/engine/load_test.go index 4fbe5f6e..e0b02a2b 100644 --- a/engine/load_test.go +++ b/engine/load_test.go @@ -13,17 +13,17 @@ import ( func TestLoad(t *testing.T) { defer Unload() - err := Load(config.Conf) + err := Load(config.Conf, LoadOption{}) assert.Nil(t, err) assert.Greater(t, len(api.APIs), 0) } func TestReload(t *testing.T) { defer Unload() - err := Load(config.Conf) + err := Load(config.Conf, LoadOption{}) assert.Nil(t, err) - Reload(config.Conf) + Reload(config.Conf, LoadOption{}) assert.Nil(t, err) assert.Greater(t, len(api.APIs), 0) } @@ -41,7 +41,7 @@ func TestLoadYaz(t *testing.T) { cfg := config.Conf cfg.AppSource = file - err = Load(cfg) + err = Load(cfg, LoadOption{}) if err != nil { t.Fatal(err) } @@ -62,13 +62,13 @@ func TestReoadYaz(t *testing.T) { cfg := config.Conf cfg.AppSource = file - err = Load(cfg) + err = Load(cfg, LoadOption{}) if err != nil { t.Fatal(err) } assert.Greater(t, len(api.APIs), 0) - Reload(cfg) + Reload(cfg, LoadOption{}) assert.Nil(t, err) assert.Greater(t, len(api.APIs), 0) } diff --git a/service/service_test.go b/service/service_test.go index f0fef854..e2d41485 100644 --- a/service/service_test.go +++ b/service/service_test.go @@ -16,7 +16,7 @@ func TestStartStop(t *testing.T) { cfg := config.Conf cfg.Port = 0 - err := engine.Load(cfg) + err := engine.Load(cfg, engine.LoadOption{}) if err != nil { t.Fatal(err) } diff --git a/service/watch.go b/service/watch.go index e655e14b..c23f8f6e 100644 --- a/service/watch.go +++ b/service/watch.go @@ -24,7 +24,7 @@ func Watch(srv *http.Server, interrupt chan uint8) (err error) { } // Reload - err = engine.Reload(config.Conf) + err = engine.Reload(config.Conf, engine.LoadOption{Action: "watch"}) if err != nil { fmt.Println(color.RedString("[Watch] Reload: %s", err.Error())) return diff --git a/service/watch_test.go b/service/watch_test.go index d62b7380..b2f02514 100644 --- a/service/watch_test.go +++ b/service/watch_test.go @@ -9,7 +9,7 @@ import ( ) func TestWatch(t *testing.T) { - err := engine.Load(config.Conf) + err := engine.Load(config.Conf, engine.LoadOption{}) if err != nil { t.Fatal(err) } diff --git a/setup/handler.go b/setup/handler.go index d8c94138..27e01442 100644 --- a/setup/handler.go +++ b/setup/handler.go @@ -86,7 +86,7 @@ func runSetup(c *gin.Context) { return } - err = engine.Load(cfg) + err = engine.Load(cfg, engine.LoadOption{}) if err != nil { c.JSON(500, gin.H{"code": 500, "message": err.Error()}) return diff --git a/setup/install.go b/setup/install.go index fc79e23f..ad7c0682 100644 --- a/setup/install.go +++ b/setup/install.go @@ -109,7 +109,10 @@ func Install(payload map[string]map[string]string) error { } // Load engine - err = engine.Load(cfg) + err = engine.Load(cfg, engine.LoadOption{ + Action: "install", + }) + if err != nil { return err }