NewRootCmd 创建根命令
()
| 25 | |
| 26 | // NewRootCmd 创建根命令 |
| 27 | func NewRootCmd() (*RootCmd, error) { |
| 28 | // 加载配置 |
| 29 | cfg, err := config.LoadConfig("") |
| 30 | if err != nil { |
| 31 | return nil, fmt.Errorf("加载配置失败: %v", err) |
| 32 | } |
| 33 | |
| 34 | // 创建引擎 |
| 35 | engine := core.NewEngine(cfg) |
| 36 | if err := engine.Start(); err != nil { |
| 37 | return nil, fmt.Errorf("启动引擎失败: %v", err) |
| 38 | } |
| 39 | |
| 40 | // 创建批量管理器(共享引擎) |
| 41 | batchManager := batch.NewManagerWithEngine(engine, cfg) |
| 42 | if err := batchManager.Start(); err != nil { |
| 43 | engine.Stop() |
| 44 | return nil, fmt.Errorf("启动批量管理器失败: %v", err) |
| 45 | } |
| 46 | |
| 47 | // 设置信号处理 |
| 48 | ctx, cancel := context.WithCancel(context.Background()) |
| 49 | go func() { |
| 50 | sigChan := make(chan os.Signal, 1) |
| 51 | signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) |
| 52 | <-sigChan |
| 53 | cancel() |
| 54 | }() |
| 55 | |
| 56 | return &RootCmd{ |
| 57 | engine: engine, |
| 58 | batchManager: batchManager, |
| 59 | ctx: ctx, |
| 60 | cancel: cancel, |
| 61 | }, nil |
| 62 | } |
| 63 | |
| 64 | // Execute 执行命令 |
| 65 | func (r *RootCmd) Execute() { |
no test coverage detected