[enhancement] cscli explain --labels (#2461)

* Add label support for explain and allow user to provide multiple labels

* Change my mind about empty string

* Add debug and im an idiot 😄
This commit is contained in:
Laurence Jones 2023-09-11 14:18:04 +01:00 committed by GitHub
parent f02f34d64c
commit 702da0f59a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 4 deletions

View file

@ -74,6 +74,11 @@ func runExplain(cmd *cobra.Command, args []string) error {
return err return err
} }
labels, err := flags.GetString("labels")
if err != nil {
return err
}
fileInfo, _ := os.Stdin.Stat() fileInfo, _ := os.Stdin.Stat()
if logType == "" || (logLine == "" && logFile == "" && dsn == "") { if logType == "" || (logLine == "" && logFile == "" && dsn == "") {
@ -150,6 +155,10 @@ func runExplain(cmd *cobra.Command, args []string) error {
} }
cmdArgs := []string{"-c", ConfigFilePath, "-type", logType, "-dsn", dsn, "-dump-data", dir, "-no-api"} cmdArgs := []string{"-c", ConfigFilePath, "-type", logType, "-dsn", dsn, "-dump-data", dir, "-no-api"}
if labels != "" {
log.Debugf("adding labels %s", labels)
cmdArgs = append(cmdArgs, "-label", labels)
}
crowdsecCmd := exec.Command(crowdsec, cmdArgs...) crowdsecCmd := exec.Command(crowdsec, cmdArgs...)
output, err := crowdsecCmd.CombinedOutput() output, err := crowdsecCmd.CombinedOutput()
if err != nil { if err != nil {
@ -209,6 +218,7 @@ tail -n 5 myfile.log | cscli explain --type nginx -f -
flags.StringP("dsn", "d", "", "DSN to test") flags.StringP("dsn", "d", "", "DSN to test")
flags.StringP("log", "l", "", "Log line to test") flags.StringP("log", "l", "", "Log line to test")
flags.StringP("type", "t", "", "Type of the acquisition to test") flags.StringP("type", "t", "", "Type of the acquisition to test")
flags.String("labels", "", "Additional labels to add to the acquisition format (key:value,key2:value2)")
flags.BoolP("verbose", "v", false, "Display individual changes") flags.BoolP("verbose", "v", false, "Display individual changes")
flags.Bool("failures", false, "Only show failed lines") flags.Bool("failures", false, "Only show failed lines")
flags.Bool("only-successful-parsers", false, "Only show successful parsers") flags.Bool("only-successful-parsers", false, "Only show successful parsers")

View file

@ -138,11 +138,13 @@ func (l *labelsMap) String() string {
} }
func (l labelsMap) Set(label string) error { func (l labelsMap) Set(label string) error {
split := strings.Split(label, ":") for _, pair := range strings.Split(label, ",") {
if len(split) != 2 { split := strings.Split(pair, ":")
return errors.Wrapf(errors.New("Bad Format"), "for Label '%s'", label) if len(split) != 2 {
return fmt.Errorf("invalid format for label '%s', must be key:value", pair)
}
l[split[0]] = split[1]
} }
l[split[0]] = split[1]
return nil return nil
} }