47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package runtime
|
|
|
|
import (
|
|
"cosmossdk.io/core/server"
|
|
"cosmossdk.io/depinject"
|
|
)
|
|
|
|
// ModuleConfigMaps is a map module scoped ConfigMaps
|
|
type ModuleConfigMaps map[string]server.ConfigMap
|
|
|
|
type ModuleConfigMapsInput struct {
|
|
depinject.In
|
|
|
|
ModuleConfigs []server.ModuleConfigMap
|
|
DynamicConfig server.DynamicConfig `optional:"true"`
|
|
}
|
|
|
|
// ProvideModuleConfigMaps returns a map of module name to module config map.
|
|
// The module config map is a map of flag to value.
|
|
func ProvideModuleConfigMaps(in ModuleConfigMapsInput) ModuleConfigMaps {
|
|
moduleConfigMaps := make(ModuleConfigMaps)
|
|
if in.DynamicConfig == nil {
|
|
return moduleConfigMaps
|
|
}
|
|
for _, moduleConfig := range in.ModuleConfigs {
|
|
cfg := moduleConfig.Config
|
|
name := moduleConfig.Module
|
|
moduleConfigMaps[name] = make(server.ConfigMap)
|
|
for flag, df := range cfg {
|
|
val := in.DynamicConfig.Get(flag)
|
|
if val != nil {
|
|
moduleConfigMaps[name][flag] = val
|
|
} else {
|
|
moduleConfigMaps[name][flag] = df
|
|
}
|
|
}
|
|
}
|
|
return moduleConfigMaps
|
|
}
|
|
|
|
func ProvideModuleScopedConfigMap(
|
|
key depinject.ModuleKey,
|
|
moduleConfigs ModuleConfigMaps,
|
|
) server.ConfigMap {
|
|
return moduleConfigs[key.Name()]
|
|
}
|