48 lines
1.1 KiB
Go
Raw Normal View History

package severity
import (
"fmt"
"strings"
"github.com/projectdiscovery/goflags"
)
type Severities []Severity
func (severities Severities) String() string {
return strings.Join(severities.ToStringArray(), ", ")
}
//nolint:indent-error-flow,revive //reducing the scope of the variables
func (severities *Severities) Set(value string) error {
if inputSeverities, err := goflags.ToStringSlice(value); err != nil {
return err
} else {
for _, inputSeverity := range inputSeverities {
if err := setSeverity(severities, inputSeverity); err != nil {
return err
}
}
return nil
}
}
func setSeverity(severities *Severities, value string) error {
computedSeverity, err := toSeverity(value)
if err != nil {
return fmt.Errorf("'%s' is not a valid severity", value)
}
// TODO change the Severities type to map[Severity]interface{}, where the values are struct{}{}, to "simulates" a "set" data structure
*severities = append(*severities, computedSeverity)
return nil
}
func (severities *Severities) ToStringArray() []string {
var result []string
for _, severity := range *severities {
result = append(result, severity.String())
}
return result
}