MCPcopy Create free account
hub / github.com/diillson/chatcli / runSubcommand

Function runSubcommand

main.go:235–309  ·  view source on GitHub ↗

runSubcommand handles the 'server' and 'connect' subcommands. These have their own initialization flow separate from the standard CLI.

(subcmd string, args []string)

Source from the content-addressed store, hash-verified

233// runSubcommand handles the 'server' and 'connect' subcommands.
234// These have their own initialization flow separate from the standard CLI.
235func runSubcommand(subcmd string, args []string) {
236 i18n.Init()
237
238 // Load .env
239 envFilePath := os.Getenv("CHATCLI_DOTENV")
240 if envFilePath == "" {
241 envFilePath = ".env"
242 } else {
243 expanded, err := utils.ExpandPath(envFilePath)
244 if err == nil {
245 envFilePath = expanded
246 }
247 }
248 _ = godotenv.Load(envFilePath)
249 theme.InitFromEnv()
250
251 logger, err := utils.InitializeLogger()
252 if err != nil {
253 fmt.Fprintf(os.Stderr, "Failed to initialize logger: %v\n", err)
254 os.Exit(1)
255 }
256
257 config.InitGlobal(logger)
258 config.Global.Load()
259 utils.ApplyGlobalTLSTrust(logger)
260
261 defer func() {
262 if err := logger.Sync(); err != nil {
263 msg := err.Error()
264 if !strings.Contains(msg, "/dev/stdout") &&
265 !strings.Contains(msg, "/dev/stderr") &&
266 !strings.Contains(msg, "invalid argument") &&
267 !strings.Contains(msg, "inappropriate ioctl") {
268 fmt.Fprintf(os.Stderr, "Error closing logger: %v\n", err)
269 }
270 }
271 }()
272
273 llmMgr, err := manager.NewLLMManager(logger)
274 if err != nil {
275 logger.Fatal("Failed to initialize LLMManager", zap.Error(err))
276 }
277
278 ctx, cancel := context.WithCancel(context.Background())
279 defer cancel()
280
281 switch subcmd {
282 case "server", "serve":
283 if err := cmd.RunServer(args, llmMgr, logger); err != nil {
284 logger.Fatal("Server failed", zap.Error(err))
285 }
286 case "connect":
287 if err := cmd.RunConnect(ctx, args, llmMgr, logger); err != nil {
288 fmt.Fprintf(os.Stderr, "Error: %v\n", err)
289 os.Exit(1)
290 }
291 case "watch":
292 if err := cmd.RunWatch(ctx, args, llmMgr, logger); err != nil {

Callers 1

dispatchSubcommandFunction · 0.85

Calls 15

InitFunction · 0.92
ExpandPathFunction · 0.92
InitFromEnvFunction · 0.92
InitializeLoggerFunction · 0.92
InitGlobalFunction · 0.92
ApplyGlobalTLSTrustFunction · 0.92
NewLLMManagerFunction · 0.92
RunServerFunction · 0.92
RunConnectFunction · 0.92
RunWatchFunction · 0.92
RunMCPServeFunction · 0.92
RunACPFunction · 0.92

Tested by

no test coverage detected