a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh
1package log 2 3import ( 4 "errors" 5 "fmt" 6 "math" 7 "strings" 8) 9 10// Level is a logging level. 11type Level int 12 13const ( 14 // DebugLevel is the debug level. 15 DebugLevel Level = -4 16 // InfoLevel is the info level. 17 InfoLevel Level = 0 18 // WarnLevel is the warn level. 19 WarnLevel Level = 4 20 // ErrorLevel is the error level. 21 ErrorLevel Level = 8 22 // FatalLevel is the fatal level. 23 FatalLevel Level = 12 24 // noLevel is used with log.Print. 25 noLevel Level = math.MaxInt 26) 27 28// String returns the string representation of the level. 29func (l Level) String() string { 30 switch l { //nolint:exhaustive 31 case DebugLevel: 32 return "debug" 33 case InfoLevel: 34 return "info" 35 case WarnLevel: 36 return "warn" 37 case ErrorLevel: 38 return "error" 39 case FatalLevel: 40 return "fatal" 41 default: 42 return "" 43 } 44} 45 46// ErrInvalidLevel is an error returned when parsing an invalid level string. 47var ErrInvalidLevel = errors.New("invalid level") 48 49// ParseLevel converts level in string to Level type. Default level is InfoLevel. 50func ParseLevel(level string) (Level, error) { 51 switch strings.ToLower(level) { 52 case DebugLevel.String(): 53 return DebugLevel, nil 54 case InfoLevel.String(): 55 return InfoLevel, nil 56 case WarnLevel.String(): 57 return WarnLevel, nil 58 case ErrorLevel.String(): 59 return ErrorLevel, nil 60 case FatalLevel.String(): 61 return FatalLevel, nil 62 default: 63 return 0, fmt.Errorf("%w: %q", ErrInvalidLevel, level) 64 } 65}