package script

import (
	"fmt"

	"github.com/yaoapp/gou/application"
	v8 "github.com/yaoapp/gou/runtime/v8"
	"github.com/yaoapp/yao/config"
	"github.com/yaoapp/yao/share"
)

// Load load all scripts and services
func Load(cfg config.Config) error {
	v8.CLearModules()
	exts := []string{"*.js", "*.ts"}
	err := application.App.Walk("scripts", func(root, file string, isdir bool) error {
		if isdir {
			return nil
		}
		_, err := v8.Load(file, share.ID(root, file))
		return err
	}, exts...)

	if err != nil {
		return err
	}

	// Load assistants - Move to the neo assistant package
	// err = application.App.Walk("assistants", func(root, file string, isdir bool) error {
	// 	if isdir {
	// 		return nil
	// 	}

	// 	// Keep the src.index only
	// 	if !strings.HasSuffix(file, "src/index.ts") {
	// 		return nil
	// 	}

	// 	id := fmt.Sprintf("assistants.%s", share.ID(root, file))
	// 	id = strings.TrimSuffix(id, ".src.index")
	// 	_, err := v8.Load(file, id)
	// 	return err
	// }, exts...)

	// if err != nil {
	// 	return err
	// }

	return application.App.Walk("services", func(root, file string, isdir bool) error {
		if isdir {
			return nil
		}
		id := fmt.Sprintf("__yao_service.%s", share.ID(root, file))
		_, err := v8.Load(file, id)
		return err
	}, exts...)
}
