fix: resolve shadow lint warnings in config secret mapping

This commit is contained in:
Alix-007 2026-03-26 06:04:29 +08:00
parent abee8cd992
commit 425cdf2b5a

View file

@ -334,24 +334,24 @@ func mergeMap(dst, src map[string]any) {
} }
func asMapField(value map[string]any, key string) (map[string]any, bool) { func asMapField(value map[string]any, key string) (map[string]any, bool) {
raw, ok := value[key] raw, exists := value[key]
if !ok { if !exists {
return nil, false return nil, false
} }
m, ok := raw.(map[string]any) m, isMap := raw.(map[string]any)
return m, ok return m, isMap
} }
func getSecretString(m map[string]any, key string) (string, bool) { func getSecretString(m map[string]any, key string) (string, bool) {
if raw, ok := m[key]; ok { if raw, exists := m[key]; exists {
s, ok := raw.(string) s, isString := raw.(string)
if ok { if isString {
return s, true return s, true
} }
} }
if raw, ok := m["_"+key]; ok { if raw, exists := m["_"+key]; exists {
s, ok := raw.(string) s, isString := raw.(string)
if ok { if isString {
return s, true return s, true
} }
} }
@ -359,112 +359,118 @@ func getSecretString(m map[string]any, key string) (string, bool) {
} }
func applyConfigSecretsFromMap(cfg *config.Config, raw map[string]any) { func applyConfigSecretsFromMap(cfg *config.Config, raw map[string]any) {
channels, ok := asMapField(raw, "channels") channels, hasChannels := asMapField(raw, "channels")
if ok { if hasChannels {
if telegram, ok := asMapField(channels, "telegram"); ok { if telegram, hasTelegram := asMapField(channels, "telegram"); hasTelegram {
if token, ok := getSecretString(telegram, "token"); ok { if token, hasToken := getSecretString(telegram, "token"); hasToken {
cfg.Channels.Telegram.SetToken(token) cfg.Channels.Telegram.SetToken(token)
} }
} }
if feishu, ok := asMapField(channels, "feishu"); ok { if feishu, hasFeishu := asMapField(channels, "feishu"); hasFeishu {
if appSecret, ok := getSecretString(feishu, "app_secret"); ok { if appSecret, hasAppSecret := getSecretString(feishu, "app_secret"); hasAppSecret {
cfg.Channels.Feishu.SetAppSecret(appSecret) cfg.Channels.Feishu.SetAppSecret(appSecret)
} }
if encryptKey, ok := getSecretString(feishu, "encrypt_key"); ok { if encryptKey, hasEncryptKey := getSecretString(feishu, "encrypt_key"); hasEncryptKey {
cfg.Channels.Feishu.SetEncryptKey(encryptKey) cfg.Channels.Feishu.SetEncryptKey(encryptKey)
} }
if verificationToken, ok := getSecretString(feishu, "verification_token"); ok { if verificationToken, hasVerificationToken := getSecretString(
feishu,
"verification_token",
); hasVerificationToken {
cfg.Channels.Feishu.SetVerificationToken(verificationToken) cfg.Channels.Feishu.SetVerificationToken(verificationToken)
} }
} }
if discord, ok := asMapField(channels, "discord"); ok { if discord, hasDiscord := asMapField(channels, "discord"); hasDiscord {
if token, ok := getSecretString(discord, "token"); ok { if token, hasToken := getSecretString(discord, "token"); hasToken {
cfg.Channels.Discord.SetToken(token) cfg.Channels.Discord.SetToken(token)
} }
} }
if weixin, ok := asMapField(channels, "weixin"); ok { if weixin, hasWeixin := asMapField(channels, "weixin"); hasWeixin {
if token, ok := getSecretString(weixin, "token"); ok { if token, hasToken := getSecretString(weixin, "token"); hasToken {
cfg.Channels.Weixin.SetToken(token) cfg.Channels.Weixin.SetToken(token)
} }
} }
if qq, ok := asMapField(channels, "qq"); ok { if qq, hasQQ := asMapField(channels, "qq"); hasQQ {
if appSecret, ok := getSecretString(qq, "app_secret"); ok { if appSecret, hasAppSecret := getSecretString(qq, "app_secret"); hasAppSecret {
cfg.Channels.QQ.SetAppSecret(appSecret) cfg.Channels.QQ.SetAppSecret(appSecret)
} }
} }
if dingtalk, ok := asMapField(channels, "dingtalk"); ok { if dingtalk, hasDingTalk := asMapField(channels, "dingtalk"); hasDingTalk {
if clientSecret, ok := getSecretString(dingtalk, "client_secret"); ok { if clientSecret, hasClientSecret := getSecretString(dingtalk, "client_secret"); hasClientSecret {
cfg.Channels.DingTalk.SetClientSecret(clientSecret) cfg.Channels.DingTalk.SetClientSecret(clientSecret)
} }
} }
if slack, ok := asMapField(channels, "slack"); ok { if slack, hasSlack := asMapField(channels, "slack"); hasSlack {
if botToken, ok := getSecretString(slack, "bot_token"); ok { if botToken, hasBotToken := getSecretString(slack, "bot_token"); hasBotToken {
cfg.Channels.Slack.SetBotToken(botToken) cfg.Channels.Slack.SetBotToken(botToken)
} }
if appToken, ok := getSecretString(slack, "app_token"); ok { if appToken, hasAppToken := getSecretString(slack, "app_token"); hasAppToken {
cfg.Channels.Slack.SetAppToken(appToken) cfg.Channels.Slack.SetAppToken(appToken)
} }
} }
if matrix, ok := asMapField(channels, "matrix"); ok { if matrix, hasMatrix := asMapField(channels, "matrix"); hasMatrix {
if accessToken, ok := getSecretString(matrix, "access_token"); ok { if accessToken, hasAccessToken := getSecretString(matrix, "access_token"); hasAccessToken {
cfg.Channels.Matrix.SetAccessToken(accessToken) cfg.Channels.Matrix.SetAccessToken(accessToken)
} }
} }
if line, ok := asMapField(channels, "line"); ok { if line, hasLine := asMapField(channels, "line"); hasLine {
if channelSecret, ok := getSecretString(line, "channel_secret"); ok { if channelSecret, hasChannelSecret := getSecretString(line, "channel_secret"); hasChannelSecret {
cfg.Channels.LINE.SetChannelSecret(channelSecret) cfg.Channels.LINE.SetChannelSecret(channelSecret)
} }
if channelAccessToken, ok := getSecretString(line, "channel_access_token"); ok { if channelAccessToken, hasChannelAccessToken := getSecretString(
line,
"channel_access_token",
); hasChannelAccessToken {
cfg.Channels.LINE.SetChannelAccessToken(channelAccessToken) cfg.Channels.LINE.SetChannelAccessToken(channelAccessToken)
} }
} }
if onebot, ok := asMapField(channels, "onebot"); ok { if onebot, hasOneBot := asMapField(channels, "onebot"); hasOneBot {
if accessToken, ok := getSecretString(onebot, "access_token"); ok { if accessToken, hasAccessToken := getSecretString(onebot, "access_token"); hasAccessToken {
cfg.Channels.OneBot.SetAccessToken(accessToken) cfg.Channels.OneBot.SetAccessToken(accessToken)
} }
} }
if wecom, ok := asMapField(channels, "wecom"); ok { if wecom, hasWeCom := asMapField(channels, "wecom"); hasWeCom {
if secret, ok := getSecretString(wecom, "secret"); ok { if secret, hasSecret := getSecretString(wecom, "secret"); hasSecret {
cfg.Channels.WeCom.SetSecret(secret) cfg.Channels.WeCom.SetSecret(secret)
} }
} }
if pico, ok := asMapField(channels, "pico"); ok { if pico, hasPico := asMapField(channels, "pico"); hasPico {
if token, ok := getSecretString(pico, "token"); ok { if token, hasToken := getSecretString(pico, "token"); hasToken {
cfg.Channels.Pico.SetToken(token) cfg.Channels.Pico.SetToken(token)
} }
} }
if irc, ok := asMapField(channels, "irc"); ok { if irc, hasIRC := asMapField(channels, "irc"); hasIRC {
if password, ok := getSecretString(irc, "password"); ok { if password, hasPassword := getSecretString(irc, "password"); hasPassword {
cfg.Channels.IRC.SetPassword(password) cfg.Channels.IRC.SetPassword(password)
} }
if nickservPassword, ok := getSecretString(irc, "nickserv_password"); ok { if nickservPassword, hasNickservPassword := getSecretString(irc, "nickserv_password"); hasNickservPassword {
cfg.Channels.IRC.SetNickServPassword(nickservPassword) cfg.Channels.IRC.SetNickServPassword(nickservPassword)
} }
if saslPassword, ok := getSecretString(irc, "sasl_password"); ok { if saslPassword, hasSASLPassword := getSecretString(irc, "sasl_password"); hasSASLPassword {
cfg.Channels.IRC.SetSASLPassword(saslPassword) cfg.Channels.IRC.SetSASLPassword(saslPassword)
} }
} }
} }
tools, ok := asMapField(raw, "tools") tools, hasTools := asMapField(raw, "tools")
if !ok { if !hasTools {
return return
} }
skills, ok := asMapField(tools, "skills") skills, hasSkills := asMapField(tools, "skills")
if !ok { if !hasSkills {
return return
} }
if github, ok := asMapField(skills, "github"); ok { if github, hasGithub := asMapField(skills, "github"); hasGithub {
if token, ok := getSecretString(github, "token"); ok { if token, hasToken := getSecretString(github, "token"); hasToken {
cfg.Tools.Skills.Github.SetToken(token) cfg.Tools.Skills.Github.SetToken(token)
} }
} }
registries, ok := asMapField(skills, "registries") registries, hasRegistries := asMapField(skills, "registries")
if !ok { if !hasRegistries {
return return
} }
if clawHub, ok := asMapField(registries, "clawhub"); ok { if clawHub, hasClawHub := asMapField(registries, "clawhub"); hasClawHub {
if authToken, ok := getSecretString(clawHub, "auth_token"); ok { if authToken, hasAuthToken := getSecretString(clawHub, "auth_token"); hasAuthToken {
cfg.Tools.Skills.Registries.ClawHub.SetAuthToken(authToken) cfg.Tools.Skills.Registries.ClawHub.SetAuthToken(authToken)
} }
} }