diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 26bd213..ae2e850 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -12,6 +12,6 @@ updates: interval: daily - package-ecosystem: gomod - directory: .mage + directory: .sage schedule: - interval: daily + interval: weekly diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 834d068..bb49816 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,5 +23,5 @@ jobs: - name: Report Code Coverage uses: codecov/codecov-action@v2.1.0 with: - file: .mage/tools/go/coverage/go-test.txt + file: .sage/tools/go/coverage/go-test.txt fail_ci_if_error: true diff --git a/.gitignore b/.gitignore index 15cb93c..485dee6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ .idea -.mage/tools/ diff --git a/.mage/go.mod b/.mage/go.mod deleted file mode 100644 index 87fbed8..0000000 --- a/.mage/go.mod +++ /dev/null @@ -1,15 +0,0 @@ -module mage-tools - -go 1.17 - -require ( - github.com/magefile/mage v1.12.1 - go.einride.tech/mage-tools v0.28.0 -) - -require ( - github.com/go-logr/logr v1.2.2 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/iancoleman/strcase v0.2.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect -) diff --git a/.mage/magefile.go b/.mage/magefile.go deleted file mode 100644 index 1e5cbc5..0000000 --- a/.mage/magefile.go +++ /dev/null @@ -1,51 +0,0 @@ -//go:build mage -// +build mage - -package main - -import ( - "github.com/magefile/mage/mg" - "go.einride.tech/mage-tools/mgmake" - "go.einride.tech/mage-tools/mgpath" - - // mage:import - "go.einride.tech/mage-tools/targets/mgyamlfmt" - - // mage:import - "go.einride.tech/mage-tools/targets/mgconvco" - - // mage:import - "go.einride.tech/mage-tools/targets/mggo" - - // mage:import - "go.einride.tech/mage-tools/targets/mggolangcilint" - - // mage:import - "go.einride.tech/mage-tools/targets/mgmarkdownfmt" - - // mage:import - "go.einride.tech/mage-tools/targets/mggitverifynodiff" -) - -func init() { - mgmake.GenerateMakefiles( - mgmake.Makefile{ - Path: mgpath.FromGitRoot("Makefile"), - DefaultTarget: All, - }, - ) -} - -func All() { - mg.Deps( - mg.F(mgconvco.ConvcoCheck, "origin/master..HEAD"), - mggolangcilint.GolangciLint, - mggo.GoTest, - mgmarkdownfmt.FormatMarkdown, - mgyamlfmt.FormatYaml, - ) - mg.SerialDeps( - mggo.GoModTidy, - mggitverifynodiff.GitVerifyNoDiff, - ) -} diff --git a/.sage/.gitignore b/.sage/.gitignore new file mode 100644 index 0000000..e30e1d9 --- /dev/null +++ b/.sage/.gitignore @@ -0,0 +1,2 @@ +tools/ +bin/ diff --git a/.sage/go.mod b/.sage/go.mod new file mode 100644 index 0000000..f9facef --- /dev/null +++ b/.sage/go.mod @@ -0,0 +1,13 @@ +module sage + +go 1.17 + +require ( + github.com/go-logr/logr v1.2.2 + go.einride.tech/sage v0.53.0 +) + +require ( + github.com/iancoleman/strcase v0.2.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) diff --git a/.mage/go.sum b/.sage/go.sum similarity index 60% rename from .mage/go.sum rename to .sage/go.sum index d20aae9..f90961c 100644 --- a/.mage/go.sum +++ b/.sage/go.sum @@ -1,13 +1,9 @@ github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/magefile/mage v1.12.1 h1:oGdAbhIUd6iKamKlDGVtU6XGdy5SgNuCWn7gCTgHDtU= -github.com/magefile/mage v1.12.1/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -go.einride.tech/mage-tools v0.28.0 h1:RSCd3tN6WrtSuudwmqiAzjCKfuTpLtE7bLKqTyuMOMU= -go.einride.tech/mage-tools v0.28.0/go.mod h1:pFpCBZ0U7a6862mks4y6v5xBkT4IhdrcJdEeTEjweMI= +go.einride.tech/sage v0.53.0 h1:6cdx0zubvjvWGlKiw/Jv0Od/BGZv+twr7Rl3EZWrZBk= +go.einride.tech/sage v0.53.0/go.mod h1:6qSXPc1PUoJOCbavwiKy4kq5SqQ1invk5C7pBG9UP3o= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= diff --git a/.sage/sagefile.go b/.sage/sagefile.go new file mode 100644 index 0000000..ed1da89 --- /dev/null +++ b/.sage/sagefile.go @@ -0,0 +1,70 @@ +package main + +import ( + "context" + + "github.com/go-logr/logr" + "go.einride.tech/sage/sg" + "go.einride.tech/sage/tools/sgconvco" + "go.einride.tech/sage/tools/sggit" + "go.einride.tech/sage/tools/sggo" + "go.einride.tech/sage/tools/sggolangcilint" + "go.einride.tech/sage/tools/sggoreview" + "go.einride.tech/sage/tools/sgmarkdownfmt" + "go.einride.tech/sage/tools/sgyamlfmt" +) + +func main() { + sg.GenerateMakefiles( + sg.Makefile{ + Path: sg.FromGitRoot("Makefile"), + DefaultTarget: All, + }, + ) +} + +func All(ctx context.Context) error { + sg.Deps(ctx, ConvcoCheck, GolangciLint, GoReview, GoTest, FormatMarkdown, FormatYAML) + sg.SerialDeps(ctx, GoModTidy, GitVerifyNoDiff) + return nil +} + +func FormatYAML(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("formatting YAML files...") + return sgyamlfmt.FormatYAML(ctx) +} + +func GoModTidy(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("tidying Go module files...") + return sg.Command(ctx, "go", "mod", "tidy", "-v").Run() +} + +func GoTest(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("running Go tests...") + return sggo.TestCommand(ctx).Run() +} + +func GoReview(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("reviewing Go files...") + return sggoreview.Command(ctx, "-c", "1", "./...").Run() +} + +func GolangciLint(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("linting Go files...") + return sggolangcilint.RunCommand(ctx).Run() +} + +func FormatMarkdown(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("formatting Markdown files...") + return sgmarkdownfmt.Command(ctx, "-w", ".").Run() +} + +func ConvcoCheck(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("checking git commits...") + return sgconvco.Command(ctx, "check", "origin/master..HEAD").Run() +} + +func GitVerifyNoDiff(ctx context.Context) error { + logr.FromContextOrDiscard(ctx).Info("verifying that git has no diff...") + return sggit.VerifyNoDiff(ctx) +} diff --git a/Makefile b/Makefile index 2186f84..4b0dc6d 100644 --- a/Makefile +++ b/Makefile @@ -1,48 +1,49 @@ -# Code generated by go.einride.tech/mage-tools. DO NOT EDIT. -# To learn more, see .mage/magefile.go and https://github.com/einride/mage-tools. +# Code generated by go.einride.tech/sage. DO NOT EDIT. +# To learn more, see .sage/sagefile.go and https://github.com/einride/sage. .DEFAULT_GOAL := all -magefile := .mage/tools/bin/magefile +sagefile := .sage/bin/sagefile -$(magefile): .mage/go.mod .mage/*.go - @cd .mage && go run go.einride.tech/mage-tools/cmd/build +$(sagefile): .sage/go.mod .sage/*.go + @cd .sage && go mod tidy && go run . -.PHONY: clean-mage-tools -clean-mage-tools: - @git clean -fdx .mage/tools +.PHONY: clean-sage +clean-sage: + @git clean -fdx .sage/tools .PHONY: all -all: $(magefile) - @$(magefile) all +all: $(sagefile) + @$(sagefile) All .PHONY: convco-check -convco-check: $(magefile) -ifndef rev - $(error missing argument rev="...") -endif - @$(magefile) convcoCheck $(rev) +convco-check: $(sagefile) + @$(sagefile) ConvcoCheck .PHONY: format-markdown -format-markdown: $(magefile) - @$(magefile) formatMarkdown +format-markdown: $(sagefile) + @$(sagefile) FormatMarkdown .PHONY: format-yaml -format-yaml: $(magefile) - @$(magefile) formatYaml +format-yaml: $(sagefile) + @$(sagefile) FormatYAML .PHONY: git-verify-no-diff -git-verify-no-diff: $(magefile) - @$(magefile) gitVerifyNoDiff +git-verify-no-diff: $(sagefile) + @$(sagefile) GitVerifyNoDiff .PHONY: go-mod-tidy -go-mod-tidy: $(magefile) - @$(magefile) goModTidy +go-mod-tidy: $(sagefile) + @$(sagefile) GoModTidy + +.PHONY: go-review +go-review: $(sagefile) + @$(sagefile) GoReview .PHONY: go-test -go-test: $(magefile) - @$(magefile) goTest +go-test: $(sagefile) + @$(sagefile) GoTest .PHONY: golangci-lint -golangci-lint: $(magefile) - @$(magefile) golangciLint +golangci-lint: $(sagefile) + @$(sagefile) GolangciLint