Skip to content

Commit eb15b3e

Browse files
committed
feat: update the console launch
1 parent bb76447 commit eb15b3e

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

cmd/launcher/console/console.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"fmt"
2323
"log"
2424
"os"
25+
"os/exec"
26+
"strings"
2527

2628
"google.golang.org/genai"
2729

@@ -98,6 +100,46 @@ func (l *consoleLauncher) Run(ctx context.Context, config *launcher.Config) erro
98100
log.Fatal(err)
99101
}
100102

103+
// 处理特殊命令
104+
trimmedInput := strings.TrimSpace(userInput)
105+
switch strings.ToLower(trimmedInput) {
106+
case "q", "quit", "exit":
107+
fmt.Println("\n正在退出...")
108+
return nil
109+
case "vim":
110+
// 创建临时文件
111+
tempFile, err := os.CreateTemp("", "adk-vim-input-")
112+
if err != nil {
113+
fmt.Printf("创建临时文件失败: %v\n", err)
114+
continue
115+
}
116+
tempFilePath := tempFile.Name()
117+
tempFile.Close()
118+
defer os.Remove(tempFilePath) // 确保程序结束时删除临时文件
119+
120+
// 启动vim编辑器
121+
fmt.Println("正在启动vim编辑器,请输入您的文本内容...")
122+
cmd := exec.Command("vim", tempFilePath)
123+
cmd.Stdin = os.Stdin
124+
cmd.Stdout = os.Stdout
125+
cmd.Stderr = os.Stderr
126+
err = cmd.Run()
127+
if err != nil {
128+
fmt.Printf("vim编辑失败: %v\n", err)
129+
continue
130+
}
131+
132+
// 读取vim编辑的内容
133+
vimContent, err := os.ReadFile(tempFilePath)
134+
if err != nil {
135+
fmt.Printf("读取vim编辑内容失败: %v\n", err)
136+
continue
137+
}
138+
139+
userInput = string(vimContent)
140+
fmt.Println("已成功读取vim编辑的内容")
141+
}
142+
101143
userMsg := genai.NewContentFromText(userInput, genai.RoleUser)
102144

103145
streamingMode := l.config.streamingMode

0 commit comments

Comments
 (0)