@@ -6,7 +6,6 @@ package util
66import (
77 "errors"
88 "net/mail"
9- "strings"
109)
1110
1211var ErrInvalidCommitTrailerValueSyntax = errors .New ("syntax error occurred while parsing a commit trailer value" )
@@ -17,26 +16,17 @@ var ErrInvalidCommitTrailerValueSyntax = errors.New("syntax error occurred while
1716//
18171918func ParseCommitTrailerValueWithAuthor (value string ) (name , email string , err error ) {
20- value = strings . TrimSpace (value )
21- if ! strings . HasSuffix ( value , ">" ) {
22- return "" , "" , ErrInvalidCommitTrailerValueSyntax
19+ addr , err := mail . ParseAddress (value )
20+ if err != nil {
21+ return name , email , err
2322 }
2423
25- closedBracketIdx := len (value ) - 1
26- openBracketIdx := strings .LastIndex (value , "<" )
27- if openBracketIdx == - 1 {
28- return "" , "" , ErrInvalidCommitTrailerValueSyntax
24+ if addr .Name == "" {
25+ return name , email , errors .New ("commit trailer missing name" )
2926 }
3027
31- email = value [openBracketIdx + 1 : closedBracketIdx ]
32- if _ , err := mail .ParseAddress (email ); err != nil {
33- return "" , "" , ErrInvalidCommitTrailerValueSyntax
34- }
35-
36- name = strings .TrimSpace (value [:openBracketIdx ])
37- if len (name ) == 0 {
38- return "" , "" , ErrInvalidCommitTrailerValueSyntax
39- }
28+ name = addr .Name
29+ email = addr .Address
4030
4131 return name , email , nil
4232}
0 commit comments