fix: Enhance loading functions to handle non-existent directories
- Added checks in various loading functions to ignore processing if the respective directories do not exist, improving error handling and preventing unnecessary operations. - Updated the Load function signature to return warnings alongside errors, allowing for better feedback on loading issues across different components.
This commit is contained in:
parent
15f3f0adf8
commit
fabced291c
31 changed files with 357 additions and 69 deletions
12
aigc/load.go
12
aigc/load.go
|
|
@ -11,9 +11,19 @@ import (
|
|||
|
||||
// Load load AIGC
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the aigcs directory does not exist
|
||||
exists, err := application.App.Exists("aigcs")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.ai.yml", "*.ai.yaml"}
|
||||
messages := []string{}
|
||||
err := application.App.Walk("aigcs", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("aigcs", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
11
api/api.go
11
api/api.go
|
|
@ -14,8 +14,17 @@ import (
|
|||
func Load(cfg config.Config) error {
|
||||
messages := []string{}
|
||||
|
||||
// Ignore if the apis directory does not exist
|
||||
exists, err := application.App.Exists("apis")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.http.yao", "*.http.json", "*.http.jsonc"}
|
||||
err := application.App.Walk("apis", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("apis", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
11
cert/cert.go
11
cert/cert.go
|
|
@ -11,6 +11,17 @@ import (
|
|||
|
||||
// Load 加载API
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the certs directory does not exist
|
||||
exists, err := application.App.Exists("certs")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.pem", "*.key", "*.pub"}
|
||||
return application.App.Walk("certs", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
|
|
|
|||
|
|
@ -57,12 +57,18 @@ var dumpCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
// Load model
|
||||
err = engine.Load(config.Conf, engine.LoadOption{Action: "dump"})
|
||||
loadWarnings, err := engine.Load(config.Conf, engine.LoadOption{Action: "dump"})
|
||||
if err != nil {
|
||||
fmt.Println(color.RedString(L("Fatal: %s"), err.Error()))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
if dumpModel != "" {
|
||||
fmt.Println(color.YellowString(L("Not supported yet")))
|
||||
os.Exit(1)
|
||||
|
|
|
|||
|
|
@ -37,12 +37,18 @@ var migrateCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
// 加载数据模型
|
||||
err := engine.Load(config.Conf, engine.LoadOption{Action: "migrate"})
|
||||
loadWarnings, err := engine.Load(config.Conf, engine.LoadOption{Action: "migrate"})
|
||||
if err != nil {
|
||||
fmt.Println(color.RedString(L("Fatal: %s"), err.Error()))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
if name != "" {
|
||||
mod, has := model.Models[name]
|
||||
if !has {
|
||||
|
|
|
|||
|
|
@ -60,12 +60,18 @@ var restoreCmd = &cobra.Command{
|
|||
})
|
||||
|
||||
// 加载数据模型
|
||||
err = engine.Load(config.Conf, engine.LoadOption{Action: "restore"})
|
||||
loadWarnings, err := engine.Load(config.Conf, engine.LoadOption{Action: "restore"})
|
||||
if err != nil {
|
||||
fmt.Println(color.RedString(L("Fatal: %s"), err.Error()))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
// Restore models
|
||||
restoreModels(filepath.Join(dst, "model"), []model.MigrateOption{
|
||||
model.WithDonotInsertValues(migrateNoInsert),
|
||||
|
|
|
|||
13
cmd/run.go
13
cmd/run.go
|
|
@ -57,7 +57,7 @@ var runCmd = &cobra.Command{
|
|||
return
|
||||
}
|
||||
|
||||
err := engine.Load(cfg, engine.LoadOption{Action: "run"})
|
||||
loadWarnings, err := engine.Load(cfg, engine.LoadOption{Action: "run"})
|
||||
if err != nil {
|
||||
if !runSilent {
|
||||
color.Red(L("Engine: %s\n"), err.Error())
|
||||
|
|
@ -130,6 +130,17 @@ var runCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
if !runSilent {
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
fmt.Println(color.YellowString("---------------------------------"))
|
||||
fmt.Println(color.YellowString(L("Warnings")))
|
||||
fmt.Println(color.YellowString("---------------------------------"))
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
color.White("--------------------------------------\n")
|
||||
color.White(L("%s Response\n"), name)
|
||||
color.White("--------------------------------------\n")
|
||||
|
|
|
|||
23
cmd/start.go
23
cmd/start.go
|
|
@ -77,7 +77,7 @@ var startCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
// load the application engine
|
||||
err := engine.Load(config.Conf, engine.LoadOption{Action: "start"})
|
||||
loadWarnings, err := engine.Load(config.Conf, engine.LoadOption{Action: "start"})
|
||||
if err != nil {
|
||||
fmt.Println(color.RedString(L("Load: %s"), err.Error()))
|
||||
os.Exit(1)
|
||||
|
|
@ -232,6 +232,17 @@ var startCmd = &cobra.Command{
|
|||
printStores(true)
|
||||
}
|
||||
|
||||
// Print the warnings
|
||||
if len(loadWarnings) > 0 {
|
||||
fmt.Println(color.YellowString("---------------------------------"))
|
||||
fmt.Println(color.YellowString(L("Warnings")))
|
||||
fmt.Println(color.YellowString("---------------------------------"))
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case v := <-srv.Event():
|
||||
|
|
@ -275,11 +286,19 @@ func install() error {
|
|||
Boot()
|
||||
|
||||
// load the application engine
|
||||
err = engine.Load(config.Conf, engine.LoadOption{Action: "start"})
|
||||
loadWarnings, err := engine.Load(config.Conf, engine.LoadOption{Action: "start"})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Print the warnings
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
fmt.Printf("\n\n")
|
||||
}
|
||||
|
||||
err = setup.Initialize(config.Conf.Root, config.Conf)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ import (
|
|||
"github.com/yaoapp/yao/studio"
|
||||
)
|
||||
|
||||
// *********************************************************************************
|
||||
// !! Yao Studio Command has been deprecated.
|
||||
// !! Do not use this command in your project.
|
||||
// *********************************************************************************
|
||||
|
||||
// RunCmd command
|
||||
var RunCmd = &cobra.Command{
|
||||
Use: "run",
|
||||
|
|
@ -43,7 +48,7 @@ var RunCmd = &cobra.Command{
|
|||
return
|
||||
}
|
||||
|
||||
err := engine.Load(cfg, engine.LoadOption{Action: "studio.run"})
|
||||
_, err := engine.Load(cfg, engine.LoadOption{Action: "studio.run"})
|
||||
if err != nil {
|
||||
fmt.Println(color.RedString(L("Engine: %s"), err.Error()))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ var BuildCmd = &cobra.Command{
|
|||
Boot()
|
||||
|
||||
cfg := config.Conf
|
||||
err := engine.Load(cfg, engine.LoadOption{Action: "sui.build"})
|
||||
loadWarnings, err := engine.Load(cfg, engine.LoadOption{Action: "sui.build"})
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, color.RedString(err.Error()))
|
||||
return
|
||||
|
|
@ -99,6 +99,13 @@ var BuildCmd = &cobra.Command{
|
|||
fmt.Println(color.YellowString("Build succeeded for %s in %s", mode, timecost))
|
||||
return
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
if len(warnings) > 0 {
|
||||
for _, warning := range warnings {
|
||||
fmt.Println(color.YellowString("Warning: %s", warning))
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ var TransCmd = &cobra.Command{
|
|||
Boot()
|
||||
|
||||
cfg := config.Conf
|
||||
err := engine.Load(cfg, engine.LoadOption{Action: "sui.trans"})
|
||||
loadWarnings, err := engine.Load(cfg, engine.LoadOption{Action: "sui.trans"})
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, color.RedString(err.Error()))
|
||||
return
|
||||
|
|
@ -135,6 +135,13 @@ var TransCmd = &cobra.Command{
|
|||
fmt.Println(color.YellowString("Translate succeeded for %s in %s", mode, timecost))
|
||||
return
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
if len(warnings) > 0 {
|
||||
for _, warning := range warnings {
|
||||
fmt.Println(color.YellowString("Warning: %s", warning))
|
||||
|
|
|
|||
|
|
@ -39,12 +39,18 @@ var WatchCmd = &cobra.Command{
|
|||
Boot()
|
||||
|
||||
cfg := config.Conf
|
||||
err := engine.Load(cfg, engine.LoadOption{Action: "sui.watch"})
|
||||
loadWarnings, err := engine.Load(cfg, engine.LoadOption{Action: "sui.watch"})
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, color.RedString(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
if len(loadWarnings) > 0 {
|
||||
for _, warning := range loadWarnings {
|
||||
fmt.Println(color.YellowString("[%s] %s", warning.Widget, warning.Error))
|
||||
}
|
||||
}
|
||||
|
||||
id := args[0]
|
||||
template := args[1]
|
||||
|
||||
|
|
|
|||
129
engine/load.go
129
engine/load.go
|
|
@ -19,7 +19,6 @@ import (
|
|||
"github.com/yaoapp/yao/flow"
|
||||
"github.com/yaoapp/yao/fs"
|
||||
"github.com/yaoapp/yao/i18n"
|
||||
"github.com/yaoapp/yao/importer"
|
||||
"github.com/yaoapp/yao/moapi"
|
||||
"github.com/yaoapp/yao/model"
|
||||
"github.com/yaoapp/yao/neo"
|
||||
|
|
@ -60,8 +59,14 @@ type LoadOption struct {
|
|||
IsReload bool `json:"reload"`
|
||||
}
|
||||
|
||||
// Warning the warning
|
||||
type Warning struct {
|
||||
Widget string
|
||||
Error error
|
||||
}
|
||||
|
||||
// Load application engine
|
||||
func Load(cfg config.Config, options LoadOption) (err error) {
|
||||
func Load(cfg config.Config, options LoadOption) (warnings []Warning, err error) {
|
||||
|
||||
defer func() { err = exception.Catch(recover()) }()
|
||||
exception.Mode = cfg.Mode
|
||||
|
|
@ -79,78 +84,91 @@ func Load(cfg config.Config, options LoadOption) (err error) {
|
|||
err = loadApp(cfg.AppSource)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Load Application", err)
|
||||
warnings = append(warnings, Warning{Widget: "Load Application", Error: err})
|
||||
}
|
||||
|
||||
// Make Database connections
|
||||
err = share.DBConnect(cfg.DB)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "DB", err)
|
||||
// printErr(cfg.Mode, "DB", err)
|
||||
warnings = append(warnings, Warning{Widget: "DB", Error: err})
|
||||
}
|
||||
|
||||
// Load Certs
|
||||
err = cert.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Cert", err)
|
||||
// printErr(cfg.Mode, "Cert", err)
|
||||
warnings = append(warnings, Warning{Widget: "Cert", Error: err})
|
||||
}
|
||||
|
||||
// Load Connectors
|
||||
err = connector.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Connector", err)
|
||||
// printErr(cfg.Mode, "Connector", err)
|
||||
warnings = append(warnings, Warning{Widget: "Connector", Error: err})
|
||||
}
|
||||
|
||||
// Load FileSystem
|
||||
err = fs.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "FileSystem", err)
|
||||
// printErr(cfg.Mode, "FileSystem", err)
|
||||
warnings = append(warnings, Warning{Widget: "FileSystem", Error: err})
|
||||
}
|
||||
|
||||
// Load i18n
|
||||
err = i18n.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "i18n", err)
|
||||
// printErr(cfg.Mode, "i18n", err)
|
||||
warnings = append(warnings, Warning{Widget: "i18n", Error: err})
|
||||
}
|
||||
|
||||
// start v8 runtime
|
||||
err = runtime.Start(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Runtime", err)
|
||||
// printErr(cfg.Mode, "Runtime", err)
|
||||
warnings = append(warnings, Warning{Widget: "Runtime", Error: err})
|
||||
}
|
||||
|
||||
// Load Query Engine
|
||||
err = query.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Query Engine", err)
|
||||
// printErr(cfg.Mode, "Query Engine", err)
|
||||
warnings = append(warnings, Warning{Widget: "Query Engine", Error: err})
|
||||
}
|
||||
|
||||
// Load Scripts
|
||||
err = script.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Script", err)
|
||||
// printErr(cfg.Mode, "Script", err)
|
||||
warnings = append(warnings, Warning{Widget: "Script", Error: err})
|
||||
}
|
||||
|
||||
// Load Models
|
||||
err = model.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Model", err)
|
||||
// printErr(cfg.Mode, "Model", err)
|
||||
warnings = append(warnings, Warning{Widget: "Model", Error: err})
|
||||
}
|
||||
|
||||
// Load Data flows
|
||||
err = flow.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Flow", err)
|
||||
// printErr(cfg.Mode, "Flow", err)
|
||||
warnings = append(warnings, Warning{Widget: "Flow", Error: err})
|
||||
}
|
||||
|
||||
// Load Stores
|
||||
err = store.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Store", err)
|
||||
// printErr(cfg.Mode, "Store", err)
|
||||
warnings = append(warnings, Warning{Widget: "Store", Error: err})
|
||||
}
|
||||
|
||||
// Load Plugins
|
||||
err = plugin.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Plugin", err)
|
||||
// printErr(cfg.Mode, "Plugin", err)
|
||||
warnings = append(warnings, Warning{Widget: "Plugin", Error: err})
|
||||
}
|
||||
|
||||
// Load WASM Application (experimental)
|
||||
|
|
@ -158,91 +176,106 @@ func Load(cfg config.Config, options LoadOption) (err error) {
|
|||
// Load build-in widgets (table / form / chart / ...)
|
||||
err = widgets.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Widgets", err)
|
||||
// printErr(cfg.Mode, "Widgets", err)
|
||||
warnings = append(warnings, Warning{Widget: "Widgets", Error: err})
|
||||
}
|
||||
|
||||
// Load Importers
|
||||
err = importer.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Plugin", err)
|
||||
}
|
||||
// err = importer.Load(cfg)
|
||||
// if err != nil {
|
||||
// // printErr(cfg.Mode, "Plugin", err)
|
||||
// warnings = append(warnings, Warning{Widget: "Plugin", Error: err})
|
||||
// }
|
||||
|
||||
// Load Apis
|
||||
err = api.Load(cfg) // 加载业务接口 API
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "API", err)
|
||||
// printErr(cfg.Mode, "API", err)
|
||||
warnings = append(warnings, Warning{Widget: "API", Error: err})
|
||||
}
|
||||
|
||||
// Load Sockets
|
||||
err = socket.Load(cfg) // Load sockets
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Socket", err)
|
||||
// printErr(cfg.Mode, "Socket", err)
|
||||
warnings = append(warnings, Warning{Widget: "Socket", Error: err})
|
||||
}
|
||||
|
||||
// Load websockets (client mode)
|
||||
err = websocket.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "WebSocket", err)
|
||||
// printErr(cfg.Mode, "WebSocket", err)
|
||||
warnings = append(warnings, Warning{Widget: "WebSocket", Error: err})
|
||||
}
|
||||
|
||||
// Load tasks
|
||||
err = task.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Task", err)
|
||||
// printErr(cfg.Mode, "Task", err)
|
||||
warnings = append(warnings, Warning{Widget: "Task", Error: err})
|
||||
}
|
||||
|
||||
// Load schedules
|
||||
err = schedule.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Schedule", err)
|
||||
// printErr(cfg.Mode, "Schedule", err)
|
||||
warnings = append(warnings, Warning{Widget: "Schedule", Error: err})
|
||||
}
|
||||
|
||||
// Load AIGC
|
||||
err = aigc.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "AIGC", err)
|
||||
}
|
||||
|
||||
// Load Neo
|
||||
err = neo.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Neo", err)
|
||||
// printErr(cfg.Mode, "AIGC", err)
|
||||
warnings = append(warnings, Warning{Widget: "AIGC", Error: err})
|
||||
}
|
||||
|
||||
// Load Custom Widget
|
||||
err = widget.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Widget", err)
|
||||
// printErr(cfg.Mode, "Widget", err)
|
||||
warnings = append(warnings, Warning{Widget: "Widget", Error: err})
|
||||
}
|
||||
|
||||
// Load Custom Widget Instances
|
||||
err = widget.LoadInstances()
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Widget", err)
|
||||
// printErr(cfg.Mode, "Widget", err)
|
||||
warnings = append(warnings, Warning{Widget: "Widget", Error: err})
|
||||
}
|
||||
|
||||
// Load SUI
|
||||
err = sui.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "SUI", err)
|
||||
// printErr(cfg.Mode, "SUI", err)
|
||||
warnings = append(warnings, Warning{Widget: "SUI", Error: err})
|
||||
}
|
||||
|
||||
// Load Moapi
|
||||
err = moapi.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Moapi", err)
|
||||
// printErr(cfg.Mode, "Moapi", err)
|
||||
warnings = append(warnings, Warning{Widget: "Moapi", Error: err})
|
||||
}
|
||||
|
||||
// Load Pipe
|
||||
err = pipe.Load(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "Pipe", err)
|
||||
// printErr(cfg.Mode, "Pipe", err)
|
||||
warnings = append(warnings, Warning{Widget: "Pipe", Error: err})
|
||||
}
|
||||
|
||||
// Load Neo
|
||||
err = neo.Load(cfg)
|
||||
if err != nil {
|
||||
// printErr(cfg.Mode, "Neo", err)
|
||||
warnings = append(warnings, Warning{Widget: "Neo", Error: err})
|
||||
}
|
||||
|
||||
for name, hook := range LoadHooks {
|
||||
err = hook(cfg)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, name, err)
|
||||
// printErr(cfg.Mode, name, err)
|
||||
warnings = append(warnings, Warning{Widget: name, Error: err})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -251,17 +284,19 @@ func Load(cfg config.Config, options LoadOption) (err error) {
|
|||
p, err := process.Of(share.App.AfterLoad, options)
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "AfterLoad", err)
|
||||
return err
|
||||
warnings = append(warnings, Warning{Widget: "AfterLoad", Error: err})
|
||||
return warnings, err
|
||||
}
|
||||
|
||||
_, err = p.Exec()
|
||||
if err != nil {
|
||||
printErr(cfg.Mode, "AfterLoad", err)
|
||||
return err
|
||||
warnings = append(warnings, Warning{Widget: "AfterLoad", Error: err})
|
||||
return warnings, err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
return warnings, nil
|
||||
}
|
||||
|
||||
// Unload application engine
|
||||
|
|
@ -458,7 +493,19 @@ func Restart(cfg config.Config, options LoadOption) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return Load(cfg, options)
|
||||
|
||||
warnings, err := Load(cfg, options)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(warnings) > 0 {
|
||||
for _, warning := range warnings {
|
||||
printErr(cfg.Mode, warning.Widget, warning.Error)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// loadApp load the application from bindata / pkg / disk
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@ import (
|
|||
|
||||
func TestLoad(t *testing.T) {
|
||||
defer Unload()
|
||||
err := Load(config.Conf, LoadOption{})
|
||||
_, 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, LoadOption{})
|
||||
_, err := Load(config.Conf, LoadOption{})
|
||||
assert.Nil(t, err)
|
||||
|
||||
Reload(config.Conf, LoadOption{})
|
||||
|
|
@ -41,7 +41,7 @@ func TestLoadYaz(t *testing.T) {
|
|||
|
||||
cfg := config.Conf
|
||||
cfg.AppSource = file
|
||||
err = Load(cfg, LoadOption{})
|
||||
_, err = Load(cfg, LoadOption{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
@ -62,7 +62,7 @@ func TestReoadYaz(t *testing.T) {
|
|||
|
||||
cfg := config.Conf
|
||||
cfg.AppSource = file
|
||||
err = Load(cfg, LoadOption{})
|
||||
_, err = Load(cfg, LoadOption{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
10
flow/flow.go
10
flow/flow.go
|
|
@ -9,6 +9,16 @@ import (
|
|||
|
||||
// Load 加载业务逻辑编排
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the flows directory does not exist
|
||||
exists, err := application.App.Exists("flows")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.flow.yao", "*.flow.json", "*.flow.jsonc"}
|
||||
return application.App.Walk("flows", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
|
|
|
|||
10
i18n/i18n.go
10
i18n/i18n.go
|
|
@ -7,6 +7,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/yaoapp/gou/application"
|
||||
"github.com/yaoapp/gou/lang"
|
||||
"github.com/yaoapp/kun/log"
|
||||
"github.com/yaoapp/yao/config"
|
||||
|
|
@ -43,6 +44,15 @@ func Load(cfg config.Config) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Ignore if the langs directory does not exist
|
||||
exists, err := application.App.Exists("langs")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Load langs
|
||||
err = lang.Load("langs")
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@ import (
|
|||
"github.com/yaoapp/yao/share"
|
||||
)
|
||||
|
||||
// *********************************************************************************
|
||||
// !! Importer has been deprecated.
|
||||
// !! Do not use this in your project.
|
||||
// *********************************************************************************
|
||||
|
||||
// Importers 导入器
|
||||
var Importers = map[string]*Importer{}
|
||||
|
||||
|
|
|
|||
11
pipe/pipe.go
11
pipe/pipe.go
|
|
@ -15,9 +15,18 @@ var pipes = map[string]*Pipe{}
|
|||
// Load the pipe
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the pipes directory does not exist
|
||||
exists, err := application.App.Exists("pipes")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.pip.yao", "*.pipe.yao"}
|
||||
errs := []error{}
|
||||
err := application.App.Walk("pipes", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("pipes", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package plugin
|
|||
import (
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
|
|
@ -19,6 +20,11 @@ func Load(cfg config.Config) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Ignore if the plugins directory does not exist
|
||||
if _, err := os.Stat(root); os.IsNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
err = filepath.Walk(root, func(file string, info fs.FileInfo, err error) error {
|
||||
if info == nil || info.IsDir() {
|
||||
|
|
|
|||
|
|
@ -13,9 +13,19 @@ import (
|
|||
|
||||
// Load load schedule
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the tasks directory does not exist
|
||||
exists, err := application.App.Exists("schedules")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.sch.yao", "*.sch.json", "*.sch.jsonc"}
|
||||
err := application.App.Walk("schedules", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("schedules", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func TestStartStop(t *testing.T) {
|
|||
|
||||
cfg := config.Conf
|
||||
cfg.Port = 0
|
||||
err := engine.Load(cfg, engine.LoadOption{})
|
||||
_, err := engine.Load(cfg, engine.LoadOption{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import (
|
|||
)
|
||||
|
||||
func TestWatch(t *testing.T) {
|
||||
err := engine.Load(config.Conf, engine.LoadOption{})
|
||||
_, err := engine.Load(config.Conf, engine.LoadOption{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,9 +12,19 @@ import (
|
|||
|
||||
// Load load store
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the stores directory does not exist
|
||||
exists, err := application.App.Exists("stores")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.yao", "*.json", "*.jsonc"}
|
||||
err := application.App.Walk("stores", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("stores", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
12
task/task.go
12
task/task.go
|
|
@ -13,9 +13,19 @@ import (
|
|||
|
||||
// Load load task
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the tasks directory does not exist
|
||||
exists, err := application.App.Exists("tasks")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.yao", "*.json", "*.jsonc"}
|
||||
err := application.App.Walk("tasks", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("tasks", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,10 +17,19 @@ var Widgets = map[string]*DSL{}
|
|||
// Load Widgets
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the widgets directory does not exist
|
||||
exists, err := application.App.Exists("widgets")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.wid.yao", "*.wid.json", "*.wid.jsonc"}
|
||||
messages := []string{}
|
||||
|
||||
err := application.App.Walk("widgets", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("widgets", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,9 +55,19 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load task
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the charts directory does not exist
|
||||
exists, err := application.App.Exists("charts")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.yao", "*.json", "*.jsonc"}
|
||||
err := application.App.Walk("charts", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("charts", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,9 +55,19 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load task
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the charts directory does not exist
|
||||
exists, err := application.App.Exists("dashboards")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.yao", "*.json", "*.jsonc"}
|
||||
err := application.App.Walk("dashboards", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("dashboards", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,9 +78,19 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load task
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the charts directory does not exist
|
||||
exists, err := application.App.Exists("forms")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.form.yao", "*.form.json", "*.form.jsonc"}
|
||||
err := application.App.Walk("forms", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("forms", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,9 +68,18 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load task
|
||||
func Load(cfg config.Config) error {
|
||||
// Ignore if the charts directory does not exist
|
||||
exists, err := application.App.Exists("lists")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.yao", "*.json", "*.jsonc"}
|
||||
err := application.App.Walk("lists", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("lists", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,16 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load login
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the login directory does not exist
|
||||
exists, err := application.App.Exists("logins")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
exts := []string{"*.login.yao", "*.login.json", "*.login.jsonc"}
|
||||
return application.App.Walk("logins", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
|
|
|
|||
|
|
@ -107,9 +107,19 @@ func LoadAndExport(cfg config.Config) error {
|
|||
|
||||
// Load load table dsl
|
||||
func Load(cfg config.Config) error {
|
||||
|
||||
// Ignore if the charts directory does not exist
|
||||
exists, err := application.App.Exists("tables")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
||||
messages := []string{}
|
||||
exts := []string{"*.tab.yao", "*.tab.json", "*.tab.jsonc"}
|
||||
err := application.App.Walk("tables", func(root, file string, isdir bool) error {
|
||||
err = application.App.Walk("tables", func(root, file string, isdir bool) error {
|
||||
if isdir {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue