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

Method reloadConfiguration

cli/cli_config.go:38–126  ·  view source on GitHub ↗

reloadConfiguration recarrega as variáveis de ambiente e reconfigura o LLMManager

(ctx context.Context)

Source from the content-addressed store, hash-verified

36
37// reloadConfiguration recarrega as variáveis de ambiente e reconfigura o LLMManager
38func (cli *ChatCLI) reloadConfiguration(ctx context.Context) {
39 fmt.Println(i18n.T("status.reloading_config"))
40
41 prevProvider := cli.Provider
42 prevModel := cli.Model
43
44 envFilePath := os.Getenv("CHATCLI_DOTENV")
45 if envFilePath == "" {
46 envFilePath = ".env"
47 } else {
48 if expanded, err := utils.ExpandPath(envFilePath); err == nil {
49 envFilePath = expanded
50 } else {
51 fmt.Println(i18n.T("main.warn_expand_path", envFilePath, err))
52 }
53 }
54 variablesToUnset := []string{
55 "LOG_LEVEL", "ENV", "LLM_PROVIDER", "LOG_FILE", "LOG_MAX_SIZE", "HISTORY_MAX_SIZE",
56 "OPENAI_API_KEY", "OPENAI_MODEL", "OPENAI_ASSISTANT_MODEL",
57 "OPENAI_USE_RESPONSES", "OPENAI_MAX_TOKENS",
58 "ANTHROPIC_API_KEY", "ANTHROPIC_MODEL", "ANTHROPIC_MAX_TOKENS", "ANTHROPIC_API_VERSION", "ANTHROPIC_BASE_URL",
59 "GOOGLEAI_API_KEY", "GOOGLEAI_MODEL", "GOOGLEAI_MAX_TOKENS",
60 "XAI_API_KEY", "XAI_MODEL", "XAI_MAX_TOKENS",
61 "ZAI_API_KEY", "ZAI_MODEL", "ZAI_MAX_TOKENS",
62 "MINIMAX_API_KEY", "MINIMAX_MODEL", "MINIMAX_MAX_TOKENS", "MINIMAX_API_COMPAT",
63 "MOONSHOT_API_KEY", "MOONSHOT_MODEL", "MOONSHOT_MAX_TOKENS", "MOONSHOT_THINKING", "MOONSHOT_API_URL",
64 "OLLAMA_ENABLED", "OLLAMA_BASE_URL", "OLLAMA_MODEL", "OLLAMA_MAX_TOKENS",
65 "CLIENT_ID", "CLIENT_KEY", "STACKSPOT_REALM", "STACKSPOT_AGENT_ID",
66 "COPILOT_MODEL", "COPILOT_MAX_TOKENS", "GITHUB_COPILOT_TOKEN",
67 "GITHUB_TOKEN", "GH_TOKEN", "GITHUB_MODELS_TOKEN", "GITHUB_MODELS_MODEL",
68 "CHATCLI_WEBFETCH_USER_AGENT", "CHATCLI_WEBFETCH_AUTOSAVE_BYTES",
69 "CHATCLI_WEBFETCH_RENDER", "CHATCLI_WEBFETCH_RENDER_TIMEOUT", "CHATCLI_WEBFETCH_RENDER_AUTOPROVISION",
70 "CHATCLI_WEBFETCH_RENDER_BROWSER",
71 "CHATCLI_EMBED_PROVIDER", "CHATCLI_EMBED_MODEL", "CHATCLI_EMBED_DIMENSIONS",
72 }
73
74 for _, variable := range variablesToUnset {
75 _ = os.Unsetenv(variable)
76 }
77
78 err := godotenv.Overload(envFilePath)
79 if err != nil && !os.IsNotExist(err) {
80 cli.logger.Error("Erro ao carregar o arquivo .env", zap.Error(err))
81 }
82
83 // Re-apply the UI theme so a CHATCLI_THEME change in .env takes effect on
84 // reload, mirroring how the provider/model are re-resolved below.
85 theme.InitFromEnv()
86
87 config.Global.Reload(cli.logger)
88
89 cli.reconfigureLogger()
90
91 // Rebuild the embedding provider so a CHATCLI_EMBED_PROVIDER change in
92 // .env takes effect on reload — without this the session keeps the
93 // provider captured at boot until the process restarts.
94 if oldEmb, newEmb := cli.refreshEmbeddingProvider(); oldEmb != newEmb {
95 fmt.Println(i18n.T("status.reload_embed_provider", newEmb))

Callers 1

HandleCommandMethod · 0.80

Calls 12

reconfigureLoggerMethod · 0.95
refreshModelCacheMethod · 0.95
TFunction · 0.92
ExpandPathFunction · 0.92
InitFromEnvFunction · 0.92
WarnMethod · 0.80
ErrorMethod · 0.65
GetClientMethod · 0.65
ReloadMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected