@@ -28,23 +28,15 @@ func parseInfo(info string) (*semver.Version, map[string]string, error) {
2828 return version , extracts , nil
2929}
3030
31- func parseInfoBigkey (s string ) string {
32- if strings .Contains (s , "# BigKeys statistics" ) {
33- startIdx := strings .Index (s , "# BigKeys statistics" )
34- if startIdx != - 1 {
35- return s [startIdx :]
36- }
37- }
38- return ""
39- }
40-
4131func extractInfo (s string ) (map [string ]string , error ) {
4232 m := make (map [string ]string )
43- bigkeysOutput := parseInfoBigkey (s )
44- if len (bigkeysOutput ) > 0 {
45- m ["bigkeys_output" ] = bigkeysOutput
33+
34+ kvPart , bigKeysOutput := extractBigKeys (s )
35+ if bigKeysOutput != "" {
36+ m ["bigkeys_output" ] = bigKeysOutput
4637 }
47- scanner := bufio .NewScanner (strings .NewReader (s ))
38+
39+ scanner := bufio .NewScanner (strings .NewReader (kvPart ))
4840 for scanner .Scan () {
4941 line := scanner .Text ()
5042
@@ -63,6 +55,15 @@ func extractInfo(s string) (map[string]string, error) {
6355 return m , scanner .Err ()
6456}
6557
58+ func extractBigKeys (s string ) (kvPart , bigKeysOutput string ) {
59+ if startIdx := strings .Index (s , "# BigKeys statistics" ); startIdx != - 1 {
60+ // Ensure we split at a line boundary
61+ lineStartIdx := strings .LastIndex (s [:startIdx ], "\n " ) + 1
62+ return s [:lineStartIdx ], s [lineStartIdx :]
63+ }
64+ return s , ""
65+ }
66+
6667func trimSpace (s string ) string {
6768 s = strings .TrimLeft (s , " " )
6869 s = strings .TrimRight (s , " " )
0 commit comments