Skip to content

Commit fa9d1d1

Browse files
committed
cmd/gorelease: support for non-starting first version
Fixes golang/go#40267 Change-Id: Ie90929fb6479c50c9a8659b0c4211d66dbd54198 Reviewed-on: https://go-review.googlesource.com/c/exp/+/320229 Trust: Jean de Klerk <[email protected]> Run-TryBot: Jean de Klerk <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Jay Conrod <[email protected]>
1 parent 7a70d7c commit fa9d1d1

File tree

5 files changed

+27
-6
lines changed

5 files changed

+27
-6
lines changed

cmd/gorelease/errors.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,18 @@ func (e *usageError) Error() string {
3434
}
3535

3636
type baseVersionError struct {
37-
err error
37+
err error
38+
modPath string
3839
}
3940

4041
func (e *baseVersionError) Error() string {
41-
return fmt.Sprintf("could not find base version: %v", e.err)
42+
firstVersion := "v0.1.0"
43+
_, major, _ := module.SplitPathVersion(e.modPath)
44+
if major != "" {
45+
firstVersion = major[1:] + ".0.0"
46+
}
47+
48+
return fmt.Sprintf("could not find base version. Consider setting -version=%s if this is a first release, or explicitly set -base=none: %v", firstVersion, e.err)
4249
}
4350

4451
func (e *baseVersionError) Unwrap() error {

cmd/gorelease/gorelease.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ func checkModPath(modPath string) error {
740740
func inferBaseVersion(ctx context.Context, modPath, max string) (baseVersion string, err error) {
741741
defer func() {
742742
if err != nil {
743-
err = &baseVersionError{err: err}
743+
err = &baseVersionError{err: err, modPath: modPath}
744744
}
745745
}()
746746

@@ -817,7 +817,6 @@ func loadVersions(ctx context.Context, modPath string) (versions []string, err e
817817
cmd := exec.CommandContext(ctx, "go", "list", "-m", "-versions", "--", modPath)
818818
cmd.Env = copyEnv(ctx, cmd.Env)
819819
cmd.Dir = tmpDir
820-
cmd.Env = append(cmd.Env, "GO111MODULE=on")
821820
out, err := cmd.Output()
822821
if err != nil {
823822
return nil, cleanCmdError(err)

cmd/gorelease/gorelease_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,11 @@ func readTest(testPath string) (*test, error) {
185185
return nil, fmt.Errorf("%s:%d: %v", testPath, lineNum, err)
186186
}
187187
case "proxyVersions":
188-
parts := strings.Split(value, ",")
188+
if len(value) == 0 {
189+
break
190+
}
189191
proxyVersions := make(map[module.Version]bool)
192+
parts := strings.Split(value, ",")
190193
for _, modpathWithVersion := range parts {
191194
vParts := strings.Split(modpathWithVersion, "@")
192195
if len(vParts) != 2 {

cmd/gorelease/testdata/basic/v3_autobase_verify_error.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ version=v3.0.0-ignore
33
release=v3.1.0
44
error=true
55
-- want --
6-
could not find base version: no versions found lower than v3.1.0
6+
could not find base version. Consider setting -version=v3.0.0 if this is a first release, or explicitly set -base=none: no versions found lower than v3.1.0
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
mod=example.com/first
2+
base=none
3+
release=v1.2.3
4+
proxyVersions=
5+
-- want --
6+
v1.2.3 is a valid semantic version for this release.
7+
-- go.mod --
8+
module example.com/first
9+
10+
go 1.12
11+
-- p.go --
12+
package p

0 commit comments

Comments
 (0)