Skip to content

Commit b334d91

Browse files
Hashem Hashemhashemmm96
authored andcommitted
feat: migrate to sage and upgrade to go 1.19
- Remove tools dir - Fix linting errors - Use go:generate for code generation and move mocks - Update workflows to use go-semantic-release - Change dependabot update frequency from daily to weekly
1 parent 2de323b commit b334d91

49 files changed

Lines changed: 505 additions & 592 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@ updates:
44
- package-ecosystem: github-actions
55
directory: /
66
schedule:
7-
interval: daily
7+
interval: weekly
88

99
- package-ecosystem: gomod
1010
directory: /
1111
schedule:
12-
interval: daily
12+
interval: weekly
13+
14+
- package-ecosystem: gomod
15+
directory: .sage
16+
schedule:
17+
interval: weekly

.github/workflows/ci.yml

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,16 @@ jobs:
1212
make:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- name: Checkout
16-
uses: actions/checkout@v3
17-
18-
- name: Setup Go
19-
uses: actions/setup-go@v3
20-
with:
21-
go-version: 1.16
22-
23-
- name: Setup Node
24-
uses: actions/setup-node@v3
15+
- name: Setup Sage
16+
uses: einride/sage/actions/setup@master
2517
with:
26-
node-version: 16
18+
go-version: 1.19
2719

2820
- name: Make
2921
run: make
3022

3123
- name: Report Code Coverage
32-
uses: codecov/codecov-action@v2.1.0
24+
uses: codecov/codecov-action@v3.1.1
3325
with:
3426
file: ./build/coverage/go-test.txt
3527
fail_ci_if_error: true
@@ -39,26 +31,19 @@ jobs:
3931
runs-on: ubuntu-latest
4032

4133
steps:
42-
- name: Checkout
43-
uses: actions/checkout@v3
44-
45-
- name: Setup Go
46-
uses: actions/setup-go@v3
34+
- name: Setup Sage
35+
uses: einride/sage/actions/setup@master
4736
with:
48-
go-version: ^1.16
37+
go-version: 1.19
4938

50-
- name: Setup Node
51-
uses: actions/setup-node@v3
39+
- name: Create Release
40+
uses: go-semantic-release/action@v1.19
5241
with:
53-
node-version: 16
54-
55-
- name: Run semantic-release
56-
run: make semantic-release
57-
env:
58-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
github-token: ${{ secrets.GITHUB_TOKEN }}
43+
allow-initial-development-versions: true
5944

6045
- name: Run goreleaser
61-
uses: goreleaser/goreleaser-action@v2.9.1
46+
uses: goreleaser/goreleaser-action@v3.2.0
6247
with:
6348
version: latest
6449
args: release --rm-dist

.golangci.yml

Lines changed: 0 additions & 29 deletions
This file was deleted.

.sage/go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module go.einride.tech/can/.sage
2+
3+
go 1.19
4+
5+
require go.einride.tech/sage v0.184.1

.sage/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go.einride.tech/sage v0.184.1 h1:ZQPFz+TMzHZ9n6OVMv3GQwj3qlE2H2lMfWVMER/MGi8=
2+
go.einride.tech/sage v0.184.1/go.mod h1:EzV5uciFX7/2ho8EKB5K9JghOfXIxlzs694b+Tkl5GQ=

.sage/main.go

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"os"
7+
"path/filepath"
8+
9+
"go.einride.tech/sage/sg"
10+
"go.einride.tech/sage/sgtool"
11+
"go.einride.tech/sage/tools/sgconvco"
12+
"go.einride.tech/sage/tools/sggit"
13+
"go.einride.tech/sage/tools/sggolangcilint"
14+
"go.einride.tech/sage/tools/sggolicenses"
15+
"go.einride.tech/sage/tools/sggoreview"
16+
"go.einride.tech/sage/tools/sgmarkdownfmt"
17+
"go.einride.tech/sage/tools/sgyamlfmt"
18+
)
19+
20+
func main() {
21+
sg.GenerateMakefiles(
22+
sg.Makefile{
23+
Path: sg.FromGitRoot("Makefile"),
24+
DefaultTarget: Default,
25+
},
26+
)
27+
}
28+
29+
func Default(ctx context.Context) error {
30+
sg.Deps(ctx, ConvcoCheck, FormatMarkdown, FormatYaml, GoGenerate, GenerateTestdata)
31+
sg.Deps(ctx, GoLint, GoReview)
32+
sg.Deps(ctx, GoTest)
33+
sg.Deps(ctx, GoModTidy)
34+
sg.Deps(ctx, GoLicenses, GitVerifyNoDiff)
35+
return nil
36+
}
37+
38+
func GoModTidy(ctx context.Context) error {
39+
sg.Logger(ctx).Println("tidying Go module files...")
40+
return sg.Command(ctx, "go", "mod", "tidy", "-v").Run()
41+
}
42+
43+
func GoTest(ctx context.Context) error {
44+
sg.Logger(ctx).Println("running Go tests...")
45+
coverageDir := sg.FromGitRoot("build", "coverage")
46+
if err := os.MkdirAll(coverageDir, 0o775); err != nil {
47+
return err
48+
}
49+
return sg.Command(
50+
ctx,
51+
"go",
52+
"test",
53+
"-short",
54+
"-race",
55+
fmt.Sprintf("-coverprofile=%s", filepath.Join(coverageDir, "go-test.txt")),
56+
"-covermode=atomic",
57+
"./...",
58+
).Run()
59+
}
60+
61+
func GoReview(ctx context.Context) error {
62+
sg.Logger(ctx).Println("reviewing Go files...")
63+
return sggoreview.Run(ctx)
64+
}
65+
66+
func GoLint(ctx context.Context) error {
67+
sg.Logger(ctx).Println("linting Go files...")
68+
return sggolangcilint.Run(ctx)
69+
}
70+
71+
func GoLicenses(ctx context.Context) error {
72+
sg.Logger(ctx).Println("checking Go licenses...")
73+
return sggolicenses.Check(ctx)
74+
}
75+
76+
func FormatMarkdown(ctx context.Context) error {
77+
sg.Logger(ctx).Println("formatting Markdown files...")
78+
return sgmarkdownfmt.Command(ctx, "-w", ".").Run()
79+
}
80+
81+
func FormatYaml(ctx context.Context) error {
82+
sg.Logger(ctx).Println("formatting Yaml files...")
83+
return sgyamlfmt.Run(ctx)
84+
}
85+
86+
func ConvcoCheck(ctx context.Context) error {
87+
sg.Logger(ctx).Println("checking git commits...")
88+
return sgconvco.Command(ctx, "check", "origin/master..HEAD").Run()
89+
}
90+
91+
func GitVerifyNoDiff(ctx context.Context) error {
92+
sg.Logger(ctx).Println("verifying that git has no diff...")
93+
return sggit.VerifyNoDiff(ctx)
94+
}
95+
96+
func GoGenerate(ctx context.Context) error {
97+
sg.Deps(ctx, Mockgen, Stringer)
98+
sg.Logger(ctx).Println("generating Go code...")
99+
return sg.Command(ctx, "go", "generate", "./...").Run()
100+
}
101+
102+
func Mockgen(ctx context.Context) error {
103+
sg.Logger(ctx).Println("installing mockgen...")
104+
_, err := sgtool.GoInstallWithModfile(ctx, "github.com/golang/mock/mockgen", sg.FromGitRoot("go.mod"))
105+
return err
106+
}
107+
108+
func Stringer(ctx context.Context) error {
109+
sg.Logger(ctx).Println("installing stringer...")
110+
_, err := sgtool.GoInstallWithModfile(ctx, "golang.org/x/tools/cmd/stringer", sg.FromGitRoot("go.mod"))
111+
return err
112+
}
113+
114+
func GenerateTestdata(ctx context.Context) error {
115+
sg.Logger(ctx).Println("generating testdata...")
116+
// don't use "sg.FromGitRoot" in paths to avoid embedding user paths in generated files
117+
cmd := sg.Command(
118+
ctx,
119+
"go",
120+
"run",
121+
"cmd/cantool/main.go",
122+
"generate",
123+
"testdata/dbc",
124+
"testdata/gen/go",
125+
)
126+
cmd.Dir = sg.FromGitRoot()
127+
return cmd.Run()
128+
}

0 commit comments

Comments
 (0)