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