|
1 // Copyright 2019 The Go Authors. All rights reserved. |
|
2 // Use of this source code is governed by a BSD-style |
|
3 // license that can be found in the LICENSE file. |
|
4 |
|
5 // Package version records versioning information about this module. |
|
6 package version |
|
7 |
|
8 import ( |
|
9 "fmt" |
|
10 "strings" |
|
11 ) |
|
12 |
|
13 // These constants determine the current version of this module. |
|
14 // |
|
15 // |
|
16 // For our release process, we enforce the following rules: |
|
17 // * Tagged releases use a tag that is identical to String. |
|
18 // * Tagged releases never reference a commit where the String |
|
19 // contains "devel". |
|
20 // * The set of all commits in this repository where String |
|
21 // does not contain "devel" must have a unique String. |
|
22 // |
|
23 // |
|
24 // Steps for tagging a new release: |
|
25 // 1. Create a new CL. |
|
26 // |
|
27 // 2. Update Minor, Patch, and/or PreRelease as necessary. |
|
28 // PreRelease must not contain the string "devel". |
|
29 // |
|
30 // 3. Since the last released minor version, have there been any changes to |
|
31 // generator that relies on new functionality in the runtime? |
|
32 // If yes, then increment RequiredGenerated. |
|
33 // |
|
34 // 4. Since the last released minor version, have there been any changes to |
|
35 // the runtime that removes support for old .pb.go source code? |
|
36 // If yes, then increment SupportMinimum. |
|
37 // |
|
38 // 5. Send out the CL for review and submit it. |
|
39 // Note that the next CL in step 8 must be submitted after this CL |
|
40 // without any other CLs in-between. |
|
41 // |
|
42 // 6. Tag a new version, where the tag is is the current String. |
|
43 // |
|
44 // 7. Write release notes for all notable changes |
|
45 // between this release and the last release. |
|
46 // |
|
47 // 8. Create a new CL. |
|
48 // |
|
49 // 9. Update PreRelease to include the string "devel". |
|
50 // For example: "" -> "devel" or "rc.1" -> "rc.1.devel" |
|
51 // |
|
52 // 10. Send out the CL for review and submit it. |
|
53 const ( |
|
54 Major = 1 |
|
55 Minor = 27 |
|
56 Patch = 1 |
|
57 PreRelease = "" |
|
58 ) |
|
59 |
|
60 // String formats the version string for this module in semver format. |
|
61 // |
|
62 // Examples: |
|
63 // v1.20.1 |
|
64 // v1.21.0-rc.1 |
|
65 func String() string { |
|
66 v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch) |
|
67 if PreRelease != "" { |
|
68 v += "-" + PreRelease |
|
69 |
|
70 // TODO: Add metadata about the commit or build hash. |
|
71 // See https://golang.org/issue/29814 |
|
72 // See https://golang.org/issue/33533 |
|
73 var metadata string |
|
74 if strings.Contains(PreRelease, "devel") && metadata != "" { |
|
75 v += "+" + metadata |
|
76 } |
|
77 } |
|
78 return v |
|
79 } |