in dev-tools/v2tool/manager/manager.go [37:68]
func InputManagerFromCfg(cfgPath string) (*InputManager, error) {
fileData, err := os.ReadFile(cfgPath)
if err != nil {
return nil, fmt.Errorf("error reading config from file %s: %w", cfgPath, err)
}
inputMgrCfg := Config{}
err = yaml.Unmarshal(fileData, &inputMgrCfg)
if err != nil {
return nil, fmt.Errorf("error unmarshalling yaml for file %s: %w", cfgPath, err)
}
// restructure the config into the InputManager
units := []Unit{}
for _, input := range inputMgrCfg.Inputs.Inputs {
ruleCfg, ok := inputMgrCfg.Rules[input.Id]
if !ok {
keys := make([]string, 0, len(inputMgrCfg.Rules))
for k := range inputMgrCfg.Rules {
keys = append(keys, k)
}
return nil, fmt.Errorf("could not find rules for input with ID '%s', available rules are %v", input.Id, keys)
}
unit, err := newUnit(input, ruleCfg)
if err != nil {
return nil, fmt.Errorf("Error adding unit of ID %s: %w", input.Id, err)
}
units = append(units, unit)
}
return &InputManager{logger: logp.L().Named("input-manager"), Units: units, clientArgs: inputMgrCfg.Args}, nil
}