@@ -83,22 +83,23 @@ func StrictNewVersion(v string) (*Version, error) {
8383 original : v ,
8484 }
8585
86- // check for prerelease or build metadata
87- var extra []string
88- if strings .ContainsAny (parts [2 ], "-+" ) {
89- // Start with the build metadata first as it needs to be on the right
90- extra = strings .SplitN (parts [2 ], "+" , 2 )
91- if len (extra ) > 1 {
92- // build metadata found
93- sv .metadata = extra [1 ]
94- parts [2 ] = extra [0 ]
86+ // Extract build metadata
87+ if strings .Contains (parts [2 ], "+" ) {
88+ extra := strings .SplitN (parts [2 ], "+" , 2 )
89+ sv .metadata = extra [1 ]
90+ parts [2 ] = extra [0 ]
91+ if err := validateMetadata (sv .metadata ); err != nil {
92+ return nil , err
9593 }
94+ }
9695
97- extra = strings .SplitN (parts [2 ], "-" , 2 )
98- if len (extra ) > 1 {
99- // prerelease found
100- sv .pre = extra [1 ]
101- parts [2 ] = extra [0 ]
96+ // Extract build prerelease
97+ if strings .Contains (parts [2 ], "-" ) {
98+ extra := strings .SplitN (parts [2 ], "-" , 2 )
99+ sv .pre = extra [1 ]
100+ parts [2 ] = extra [0 ]
101+ if err := validatePrerelease (sv .pre ); err != nil {
102+ return nil , err
102103 }
103104 }
104105
@@ -114,7 +115,7 @@ func StrictNewVersion(v string) (*Version, error) {
114115 }
115116 }
116117
117- // Extract the major, minor, and patch elements onto the returned Version
118+ // Extract major, minor, and patch
118119 var err error
119120 sv .major , err = strconv .ParseUint (parts [0 ], 10 , 64 )
120121 if err != nil {
@@ -131,23 +132,6 @@ func StrictNewVersion(v string) (*Version, error) {
131132 return nil , err
132133 }
133134
134- // No prerelease or build metadata found so returning now as a fastpath.
135- if sv .pre == "" && sv .metadata == "" {
136- return sv , nil
137- }
138-
139- if sv .pre != "" {
140- if err = validatePrerelease (sv .pre ); err != nil {
141- return nil , err
142- }
143- }
144-
145- if sv .metadata != "" {
146- if err = validateMetadata (sv .metadata ); err != nil {
147- return nil , err
148- }
149- }
150-
151135 return sv , nil
152136}
153137
0 commit comments