// set — 設定/覆寫變數,傳遞到下一個節點 // 支援 assignments 陣列或 values 物件兩種格式 package main import ( "encoding/json" "io" "os" ) type Input struct { Assignments []Assignment `json:"assignments"` Values map[string]interface{} `json:"values"` Context map[string]interface{} `json:"context"` } type Assignment struct { Key string `json:"key"` Value interface{} `json:"value"` } func main() { raw, err := io.ReadAll(os.Stdin) if err != nil { writeError("failed to read stdin: " + err.Error()) return } var input Input if err := json.Unmarshal(raw, &input); err != nil { writeError("invalid input JSON: " + err.Error()) return } result := make(map[string]interface{}) for k, v := range input.Context { result[k] = v } if len(input.Assignments) > 0 { for _, a := range input.Assignments { result[a.Key] = a.Value } } else if len(input.Values) > 0 { for k, v := range input.Values { result[k] = v } } else { writeError("需提供 assignments 陣列或 values 物件") return } out, _ := json.Marshal(map[string]interface{}{"success": true, "data": result}) os.Stdout.Write(out) } func writeError(msg string) { out, _ := json.Marshal(map[string]interface{}{"success": false, "error": msg}) os.Stdout.Write(out) }