34 lines
824 B
Go
34 lines
824 B
Go
|
|
package config
|
||
|
|
|
||
|
|
import (
|
||
|
|
"crypto/sha256"
|
||
|
|
"encoding/hex"
|
||
|
|
"encoding/json"
|
||
|
|
"errors"
|
||
|
|
)
|
||
|
|
|
||
|
|
var ErrConfigConflict = errors.New("CONFIG_CONFLICT: 配置已在其他窗口更改,请重新加载后再保存;当前编辑内容已保留")
|
||
|
|
|
||
|
|
func cloneConfig(cfg Config) Config {
|
||
|
|
cfg.ModelAdapters = append([]ModelAdapterConfig(nil), cfg.ModelAdapters...)
|
||
|
|
if cfg.HomeMetrics.PersistentMode != nil {
|
||
|
|
value := *cfg.HomeMetrics.PersistentMode
|
||
|
|
cfg.HomeMetrics.PersistentMode = &value
|
||
|
|
}
|
||
|
|
return cfg
|
||
|
|
}
|
||
|
|
|
||
|
|
func withRevision(cfg Config) Config {
|
||
|
|
cfg = cloneConfig(cfg)
|
||
|
|
view := cloneConfig(cfg)
|
||
|
|
view.Revision = ""
|
||
|
|
view.LastAgentModelHash = ""
|
||
|
|
for i := range view.ModelAdapters {
|
||
|
|
view.ModelAdapters[i].ID = ""
|
||
|
|
}
|
||
|
|
data, _ := json.Marshal(view)
|
||
|
|
sum := sha256.Sum256(data)
|
||
|
|
cfg.Revision = hex.EncodeToString(sum[:])
|
||
|
|
return cfg
|
||
|
|
}
|