| 209 | } |
| 210 | |
| 211 | func mapToServer(name string, raw map[string]any) Server { |
| 212 | s := Server{Name: name} |
| 213 | if v, ok := raw["command"].(string); ok { |
| 214 | s.Command = v |
| 215 | } |
| 216 | if v, ok := raw["url"].(string); ok { |
| 217 | s.URL = v |
| 218 | } |
| 219 | if v, ok := raw["type"].(string); ok { |
| 220 | s.Type = v |
| 221 | } |
| 222 | if args, ok := raw["args"].([]any); ok { |
| 223 | for _, a := range args { |
| 224 | if as, ok := a.(string); ok { |
| 225 | s.Args = append(s.Args, as) |
| 226 | } |
| 227 | } |
| 228 | } |
| 229 | if envRaw, ok := raw["env"].(map[string]any); ok { |
| 230 | s.Env = map[string]string{} |
| 231 | for k, v := range envRaw { |
| 232 | if vs, ok := v.(string); ok { |
| 233 | s.Env[k] = vs |
| 234 | } |
| 235 | } |
| 236 | } |
| 237 | return s |
| 238 | } |
| 239 | |
| 240 | func readJSON(path string) (map[string]any, error) { |
| 241 | data, err := os.ReadFile(path) |