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 | // For our release process, we enforce the following rules:
|
---|
16 | // - Tagged releases use a tag that is identical to String.
|
---|
17 | // - Tagged releases never reference a commit where the String
|
---|
18 | // contains "devel".
|
---|
19 | // - The set of all commits in this repository where String
|
---|
20 | // does not contain "devel" must have a unique String.
|
---|
21 | //
|
---|
22 | // Steps for tagging a new release:
|
---|
23 | //
|
---|
24 | // 1. Create a new CL.
|
---|
25 | //
|
---|
26 | // 2. Update Minor, Patch, and/or PreRelease as necessary.
|
---|
27 | // PreRelease must not contain the string "devel".
|
---|
28 | //
|
---|
29 | // 3. Since the last released minor version, have there been any changes to
|
---|
30 | // generator that relies on new functionality in the runtime?
|
---|
31 | // If yes, then increment RequiredGenerated.
|
---|
32 | //
|
---|
33 | // 4. Since the last released minor version, have there been any changes to
|
---|
34 | // the runtime that removes support for old .pb.go source code?
|
---|
35 | // If yes, then increment SupportMinimum.
|
---|
36 | //
|
---|
37 | // 5. Send out the CL for review and submit it.
|
---|
38 | // Note that the next CL in step 8 must be submitted after this CL
|
---|
39 | // without any other CLs in-between.
|
---|
40 | //
|
---|
41 | // 6. Tag a new version, where the tag is is the current String.
|
---|
42 | //
|
---|
43 | // 7. Write release notes for all notable changes
|
---|
44 | // between this release and the last release.
|
---|
45 | //
|
---|
46 | // 8. Create a new CL.
|
---|
47 | //
|
---|
48 | // 9. Update PreRelease to include the string "devel".
|
---|
49 | // For example: "" -> "devel" or "rc.1" -> "rc.1.devel"
|
---|
50 | //
|
---|
51 | // 10. Send out the CL for review and submit it.
|
---|
52 | const (
|
---|
53 | Major = 1
|
---|
54 | Minor = 28
|
---|
55 | Patch = 1
|
---|
56 | PreRelease = ""
|
---|
57 | )
|
---|
58 |
|
---|
59 | // String formats the version string for this module in semver format.
|
---|
60 | //
|
---|
61 | // Examples:
|
---|
62 | //
|
---|
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 | }
|
---|