Skip to content

Commit 75e926c

Browse files
authored
Merge pull request #77 from gostaticanalysis/fix-go-version
Fix go version logic
2 parents 2cca81c + 670903f commit 75e926c

22 files changed

+68
-49
lines changed

v2/go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ module github.com/gostaticanalysis/skeleton/v2
33
go 1.23.3
44

55
require (
6-
github.com/gostaticanalysis/skeletonkit v0.4.0
6+
github.com/gostaticanalysis/skeletonkit v0.4.1
77
github.com/tenntenn/golden v0.2.0
8-
golang.org/x/mod v0.21.0
8+
golang.org/x/mod v0.22.0
99
)
1010

1111
require (
1212
github.com/google/go-cmp v0.6.0 // indirect
1313
github.com/josharian/mapfs v0.0.0-20210615234106-095c008854e6 // indirect
1414
github.com/josharian/txtarfs v0.0.0-20240408113805-5dc76b8fe6bf // indirect
15-
golang.org/x/sync v0.8.0 // indirect
16-
golang.org/x/tools v0.26.0 // indirect
15+
golang.org/x/sync v0.9.0 // indirect
16+
golang.org/x/tools v0.27.0 // indirect
1717
)
1818

1919
retract v2.1.1

v2/go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
22
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
33
github.com/gostaticanalysis/skeletonkit v0.4.0 h1:dHR48OSGfrbA6G36W5wd6TuY6w6Gooi4hRrvxa5uH9o=
44
github.com/gostaticanalysis/skeletonkit v0.4.0/go.mod h1:UcRLvBDmeN7krfn6gM2W58XEA5IzjHxtX1NLGR3p2CM=
5+
github.com/gostaticanalysis/skeletonkit v0.4.1 h1:22ImX8zqtjDGfvQZYwJvtVR6ff6JwG4jQLIigZGpNto=
6+
github.com/gostaticanalysis/skeletonkit v0.4.1/go.mod h1:ep5WlFfwr3pi3erF3rcpyobHmyle9aLLbKCAacBRGc4=
57
github.com/josharian/mapfs v0.0.0-20210615234106-095c008854e6 h1:c+ctPFdISggaSNCfU1IueNBAsqetJSvMcpQlT+0OVdY=
68
github.com/josharian/mapfs v0.0.0-20210615234106-095c008854e6/go.mod h1:Rv/momJI8DgrWnBZip+SgagpcgORIZQE5SERlxNb8LY=
79
github.com/josharian/txtarfs v0.0.0-20240408113805-5dc76b8fe6bf h1:ZWuoyLMwZvLJ6OHUhPq1sZHa37Pikt6DXkZPhhOBzEE=
@@ -15,13 +17,17 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
1517
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
1618
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
1719
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
20+
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
21+
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
1822
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
1923
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
2024
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
2125
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
2226
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
2327
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
2428
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
29+
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
30+
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
2531
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
2632
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2733
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -33,6 +39,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
3339
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
3440
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
3541
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
42+
golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o=
43+
golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q=
3644
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3745
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3846
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

v2/skeleton/skeleton.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package skeleton
22

33
import (
4+
"bytes"
45
"flag"
56
"fmt"
6-
"go/build"
77
"io"
88
"io/fs"
99
"os"
10+
"os/exec"
1011
"path"
1112
"path/filepath"
1213
"strings"
1314

14-
"github.com/gostaticanalysis/skeleton/v2/skeleton/internal/gomod"
1515
"github.com/gostaticanalysis/skeletonkit"
16-
"golang.org/x/mod/modfile"
1716
"golang.org/x/mod/module"
17+
18+
"github.com/gostaticanalysis/skeleton/v2/skeleton/internal/gomod"
1819
)
1920

2021
const (
@@ -36,8 +37,16 @@ func Main(version string, args []string) int {
3637
Output: os.Stdout,
3738
ErrOutput: os.Stderr,
3839
Input: os.Stdin,
39-
GoVersion: goVersion(),
4040
}
41+
42+
gover, err := goVersion(s.Dir)
43+
if err != nil {
44+
fmt.Fprintln(s.ErrOutput, "Error:", err)
45+
return ExitError
46+
}
47+
48+
s.GoVersion = gover
49+
4150
return s.Run(version, args)
4251
}
4352

@@ -192,13 +201,15 @@ func isGoMod(p string) bool {
192201
!strings.Contains(p, "testdata/")
193202
}
194203

195-
func goVersion() string {
196-
tags := build.Default.ReleaseTags
197-
for i := len(tags) - 1; i >= 0; i-- {
198-
version := tags[i]
199-
if strings.HasPrefix(version, "go") && modfile.GoVersionRE.MatchString(version[2:]) {
200-
return version[2:]
201-
}
204+
func goVersion(dir string) (string, error) {
205+
var stdout bytes.Buffer
206+
cmd := exec.Command("go", "env", "GOVERSION")
207+
cmd.Dir = dir
208+
cmd.Stdout = &stdout
209+
210+
if err := cmd.Run(); err != nil {
211+
return "", err
202212
}
203-
return ""
213+
214+
return strings.TrimSpace(stdout.String()), nil
204215
}

v2/skeleton/testdata/kind-codegen-go118.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func TestGenerator(t *testing.T) {
151151
-- example/go.mod --
152152
module example.com/example
153153

154-
go 1.23
154+
go 1.23.3
155155

156156
-- example/testdata/src/a/a.go --
157157
package a
@@ -202,5 +202,5 @@ func (m *MockLogger) Infof(format string, args ...any) {
202202
-- example/testdata/src/a/go.mod --
203203
module a
204204

205-
go 1.23
205+
go 1.23.3
206206

v2/skeleton/testdata/kind-codegen.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func TestGenerator(t *testing.T) {
151151
-- example/go.mod --
152152
module example.com/example
153153

154-
go 1.23
154+
go 1.23.3
155155

156156
-- example/testdata/src/a/a.go --
157157
package a
@@ -202,5 +202,5 @@ func (m *MockLogger) Infof(format string, args ...interface{}) {
202202
-- example/testdata/src/a/go.mod --
203203
module a
204204

205-
go 1.23
205+
go 1.23.3
206206

v2/skeleton/testdata/kind-inspect-go118.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func TestAnalyzer(t *testing.T) {
6767
-- example/go.mod --
6868
module example.com/example
6969

70-
go 1.23
70+
go 1.23.3
7171

7272
-- example/testdata/src/a/a.go --
7373
package a
@@ -80,5 +80,5 @@ func f() {
8080
-- example/testdata/src/a/go.mod --
8181
module a
8282

83-
go 1.23
83+
go 1.23.3
8484

v2/skeleton/testdata/kind-inspect.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func TestAnalyzer(t *testing.T) {
6767
-- example/go.mod --
6868
module example.com/example
6969

70-
go 1.23
70+
go 1.23.3
7171

7272
-- example/testdata/src/a/a.go --
7373
package a
@@ -80,5 +80,5 @@ func f() {
8080
-- example/testdata/src/a/go.mod --
8181
module a
8282

83-
go 1.23
83+
go 1.23.3
8484

v2/skeleton/testdata/kind-packages-go118.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func pkgname(pkg *packages.Package) string {
228228
-- example/go.mod --
229229
module example.com/example
230230

231-
go 1.23
231+
go 1.23.3
232232

233233
-- example/internal/analyzer.go --
234234
package internal
@@ -358,5 +358,5 @@ func f() {
358358
-- example/testdata/src/a/go.mod --
359359
module a
360360

361-
go 1.23
361+
go 1.23.3
362362

v2/skeleton/testdata/kind-packages.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func pkgname(pkg *packages.Package) string {
228228
-- example/go.mod --
229229
module example.com/example
230230

231-
go 1.23
231+
go 1.23.3
232232

233233
-- example/internal/analyzer.go --
234234
package internal
@@ -358,5 +358,5 @@ func f() {
358358
-- example/testdata/src/a/go.mod --
359359
module a
360360

361-
go 1.23
361+
go 1.23.3
362362

v2/skeleton/testdata/kind-ssa-go118.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func TestAnalyzer(t *testing.T) {
6666
-- example/go.mod --
6767
module example.com/example
6868

69-
go 1.23
69+
go 1.23.3
7070

7171
-- example/testdata/src/a/a.go --
7272
package a
@@ -79,5 +79,5 @@ func f() {
7979
-- example/testdata/src/a/go.mod --
8080
module a
8181

82-
go 1.23
82+
go 1.23.3
8383

0 commit comments

Comments
 (0)