podman
119 строк · 2.6 Кб
1//go:build mage
2// +build mage
3
4package main
5
6import (
7"fmt"
8"io"
9"os"
10"os/exec"
11
12"github.com/fatih/color"
13"github.com/magefile/mage/mg" // mg contains helpful utility functions, like Deps
14)
15
16var (
17// Default target to run when none is specified
18// If not set, running mage will list available targets
19Default = Build
20app string = "git-validation"
21Stdout = cw{c: color.New(color.FgGreen), o: os.Stdout}
22Stderr = cw{c: color.New(color.FgRed), o: os.Stderr}
23)
24
25// hack around color.Color not implementing Write()
26type cw struct {
27c *color.Color
28o io.Writer
29}
30
31func (cw cw) Write(p []byte) (int, error) {
32i := len(p)
33_, err := cw.c.Fprint(cw.o, string(p)) // discarding the number of bytes written for now...
34return i, err
35}
36
37// A build step that requires additional params, or platform specific steps for example
38func Build() error {
39mg.Deps(InstallDeps)
40fmt.Println("Building...")
41cmd := exec.Command("go", "build", "-v", "-o", app, ".")
42cmd.Stdout = Stdout
43cmd.Stderr = Stderr
44return cmd.Run()
45}
46
47// Vet the codes
48func Vet() error {
49fmt.Println("go vet...")
50cmd := exec.Command("go", "vet", "./...")
51cmd.Stdout = Stdout
52cmd.Stderr = Stderr
53return cmd.Run()
54}
55
56// Run the Linters
57func Lint() error {
58mg.Deps(InstallToolsLint)
59fmt.Println("Linting...")
60cmd := exec.Command("golangci-lint", "run")
61cmd.Stdout = Stdout
62cmd.Stderr = Stderr
63return cmd.Run()
64}
65
66// Run the tests available
67func Test() error {
68fmt.Println("Testing...")
69cmd := exec.Command("go", "test", "-v", "./...")
70cmd.Stdout = Stdout
71cmd.Stderr = Stderr
72return cmd.Run()
73}
74
75// A custom install step if you need your bin someplace other than go/bin
76func Install() error {
77mg.Deps(Build)
78fmt.Println("Installing...")
79return os.Rename(app, "/usr/local/bin/"+app)
80}
81
82// Manage your deps, or running package managers.
83func InstallDeps() error {
84mg.Deps(Tidy)
85fmt.Println("Installing Deps...")
86cmd := exec.Command("go", "get", "./...")
87cmd.Stdout = Stdout
88cmd.Stderr = Stderr
89return cmd.Run()
90}
91
92// Tools used during build/dev/test
93func InstallTools() error {
94mg.Deps(InstallToolsLint)
95return nil
96}
97
98func InstallToolsLint() error {
99fmt.Println("Installing Deps...")
100cmd := exec.Command("go", "install", "github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.2")
101cmd.Stdout = Stdout
102cmd.Stderr = Stderr
103return cmd.Run()
104}
105
106// Tidy go modules
107func Tidy() error {
108fmt.Println("Tidy up...")
109cmd := exec.Command("go", "mod", "tidy")
110cmd.Stdout = Stdout
111cmd.Stderr = Stderr
112return cmd.Run()
113}
114
115// Clean up after yourself
116func Clean() {
117fmt.Println("Cleaning...")
118os.RemoveAll(app)
119}
120