run.go 671 B

1234567891011121314151617181920212223242526272829
  1. package main
  2. import (
  3. "fmt"
  4. se "git.swzry.com/ProjectNagae/saki-v0/engine"
  5. "github.com/urfave/cli/v2"
  6. )
  7. func CmdRun(c *cli.Context) error {
  8. if c.NArg() != 1 {
  9. return fmt.Errorf("invalid arguments:\nUsage: sakish exec <script_file>")
  10. }
  11. cfg, err := LoadConfig(c)
  12. if err != nil {
  13. return fmt.Errorf("failed to load config:\n%w", err)
  14. }
  15. cfg.SetArgsSpecifiedItemsForExec(c)
  16. engine := se.NewEngine(cfg)
  17. err = engine.Prepare()
  18. InitBuiltins(engine)
  19. if err != nil {
  20. return fmt.Errorf("failed to prepare script engine:\n%w", err)
  21. }
  22. err = engine.RunFile(c.Args().Get(0))
  23. if err != nil {
  24. return fmt.Errorf("failed to exec script:\n%w", err)
  25. }
  26. return nil
  27. }