ParseKafkaVersion parses and returns kafka version or error from a string
(s string)
| 318 | |
| 319 | // ParseKafkaVersion parses and returns kafka version or error from a string |
| 320 | func ParseKafkaVersion(s string) (KafkaVersion, error) { |
| 321 | if len(s) < 5 { |
| 322 | return DefaultVersion, fmt.Errorf("invalid version `%s`", s) |
| 323 | } |
| 324 | var major, minor, veryMinor, patch uint |
| 325 | var err error |
| 326 | if s[0] == '0' { |
| 327 | err = scanKafkaVersion(s, validPreKafka1Version, "0.%d.%d.%d", [3]*uint{&minor, &veryMinor, &patch}) |
| 328 | } else { |
| 329 | err = scanKafkaVersion(s, validPostKafka1Version, "%d.%d.%d", [3]*uint{&major, &minor, &veryMinor}) |
| 330 | } |
| 331 | if err != nil { |
| 332 | return DefaultVersion, err |
| 333 | } |
| 334 | return newKafkaVersion(major, minor, veryMinor, patch), nil |
| 335 | } |
| 336 | |
| 337 | func scanKafkaVersion(s string, pattern *regexp.Regexp, format string, v [3]*uint) error { |
| 338 | if !pattern.MatchString(s) { |