2023-01-05 16:58:36 +08:00
|
|
|
package process
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2025-06-12 00:27:51 +08:00
|
|
|
FindProcessStrict FindProcessMode = iota
|
|
|
|
FindProcessAlways
|
|
|
|
FindProcessOff
|
2023-01-05 16:58:36 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2025-06-12 00:27:51 +08:00
|
|
|
validModes = map[string]FindProcessMode{
|
|
|
|
FindProcessStrict.String(): FindProcessStrict,
|
|
|
|
FindProcessAlways.String(): FindProcessAlways,
|
|
|
|
FindProcessOff.String(): FindProcessOff,
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2025-06-12 00:27:51 +08:00
|
|
|
type FindProcessMode int
|
2023-01-05 16:58:36 +08:00
|
|
|
|
2025-06-12 00:27:51 +08:00
|
|
|
// UnmarshalText unserialize FindProcessMode
|
|
|
|
func (m *FindProcessMode) UnmarshalText(data []byte) error {
|
|
|
|
return m.Set(string(data))
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
|
|
|
|
2025-06-12 00:27:51 +08:00
|
|
|
func (m *FindProcessMode) Set(value string) error {
|
|
|
|
mode, exist := validModes[strings.ToLower(value)]
|
|
|
|
if !exist {
|
|
|
|
return errors.New("invalid find process mode")
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
2025-06-12 00:27:51 +08:00
|
|
|
*m = mode
|
|
|
|
return nil
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
|
|
|
|
2025-06-12 00:27:51 +08:00
|
|
|
// MarshalText serialize FindProcessMode
|
|
|
|
func (m FindProcessMode) MarshalText() ([]byte, error) {
|
|
|
|
return []byte(m.String()), nil
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
|
|
|
|
2025-06-12 00:27:51 +08:00
|
|
|
func (m FindProcessMode) String() string {
|
|
|
|
switch m {
|
|
|
|
case FindProcessAlways:
|
|
|
|
return "always"
|
|
|
|
case FindProcessOff:
|
|
|
|
return "off"
|
|
|
|
default:
|
|
|
|
return "strict"
|
2023-01-05 16:58:36 +08:00
|
|
|
}
|
|
|
|
}
|