package main import ( "errors" "strconv" "strings" ) // ErrorEmpty returned when value is empty. var ErrorEmpty = errors.New("empty value not allowed") // StringSlice is a type of flag that allows setting multiple string values. type StringSlice []string func (s *StringSlice) String() string { return "string slice" } // Set trims space from string and stores it. func (s *StringSlice) Set(value string) error { trimmed := strings.TrimSpace(value) if len(trimmed) == 0 { return ErrorEmpty } *s = append(*s, trimmed) return nil } // IntSlice is a type of flag that allows setting multiple int values. type IntSlice []int func (s *IntSlice) String() string { return "int slice" } // Set trims space from string and stores it. func (s *IntSlice) Set(value string) error { val, err := strconv.Atoi(value) if err != nil { return err } *s = append(*s, val) return nil }