Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: vpython/python/version.go

Issue 2963503003: [errors] Greatly simplify common/errors package. (Closed)
Patch Set: fix nits Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « vpython/python/python.go ('k') | vpython/run.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The LUCI Authors. All rights reserved. 1 // Copyright 2017 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package python 5 package python
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "regexp" 9 "regexp"
10 "strconv" 10 "strconv"
(...skipping 27 matching lines...) Expand all
38 38
39 // ParseVersion parses a Python version from a version string (e.g., "1.2.3"). 39 // ParseVersion parses a Python version from a version string (e.g., "1.2.3").
40 func ParseVersion(s string) (Version, error) { 40 func ParseVersion(s string) (Version, error) {
41 var v Version 41 var v Version
42 if s == "" { 42 if s == "" {
43 return v, nil 43 return v, nil
44 } 44 }
45 45
46 match := canonicalVersionRE.FindStringSubmatch(s) 46 match := canonicalVersionRE.FindStringSubmatch(s)
47 if match == nil { 47 if match == nil {
48 » » return v, errors.Reason("non-canonical Python version string: %( value)q"). 48 » » return v, errors.Reason("non-canonical Python version string: %q ", s).Err()
49 » » » D("value", s).
50 » » » Err()
51 } 49 }
52 parts := strings.Split(match[2], ".") 50 parts := strings.Split(match[2], ".")
53 51
54 parseVersion := func(value string) (int, error) { 52 parseVersion := func(value string) (int, error) {
55 version, err := strconv.Atoi(value) 53 version, err := strconv.Atoi(value)
56 if err != nil { 54 if err != nil {
57 » » » return 0, errors.Annotate(err).Reason("invalid number va lue: %(value)q"). 55 » » » return 0, errors.Annotate(err, "invalid number value: %q ", value).Err()
58 » » » » D("value", value).
59 » » » » Err()
60 } 56 }
61 return version, nil 57 return version, nil
62 } 58 }
63 59
64 // Regexp match guarantees that "parts" will have at least one component , and 60 // Regexp match guarantees that "parts" will have at least one component , and
65 // that all components are well-formed numbers. 61 // that all components are well-formed numbers.
66 var err error 62 var err error
67 if len(parts) >= 3 { 63 if len(parts) >= 3 {
68 if v.Patch, err = parseVersion(parts[2]); err != nil { 64 if v.Patch, err = parseVersion(parts[2]); err != nil {
69 » » » return v, errors.Annotate(err).Reason("invalid patch val ue").Err() 65 » » » return v, errors.Annotate(err, "invalid patch value").Er r()
70 } 66 }
71 } 67 }
72 if len(parts) >= 2 { 68 if len(parts) >= 2 {
73 if v.Minor, err = parseVersion(parts[1]); err != nil { 69 if v.Minor, err = parseVersion(parts[1]); err != nil {
74 » » » return v, errors.Annotate(err).Reason("invalid minor val ue").Err() 70 » » » return v, errors.Annotate(err, "invalid minor value").Er r()
75 } 71 }
76 } 72 }
77 if v.Major, err = parseVersion(parts[0]); err != nil { 73 if v.Major, err = parseVersion(parts[0]); err != nil {
78 » » return v, errors.Annotate(err).Reason("invalid major value").Err () 74 » » return v, errors.Annotate(err, "invalid major value").Err()
79 } 75 }
80 if v.IsZero() { 76 if v.IsZero() {
81 return v, errors.Reason("version is incomplete").Err() 77 return v, errors.Reason("version is incomplete").Err()
82 } 78 }
83 return v, nil 79 return v, nil
84 } 80 }
85 81
86 func (v Version) String() string { 82 func (v Version) String() string {
87 if v.IsZero() { 83 if v.IsZero() {
88 return "" 84 return ""
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 case v.Major > other.Major: 142 case v.Major > other.Major:
147 return false 143 return false
148 case v.Minor < other.Minor: 144 case v.Minor < other.Minor:
149 return true 145 return true
150 case v.Minor > other.Minor: 146 case v.Minor > other.Minor:
151 return false 147 return false
152 default: 148 default:
153 return (v.Patch < other.Patch) 149 return (v.Patch < other.Patch)
154 } 150 }
155 } 151 }
OLDNEW
« no previous file with comments | « vpython/python/python.go ('k') | vpython/run.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698