podman

Форк
0
119 строк · 2.6 Кб
1
//go:build mage
2
// +build mage
3

4
package main
5

6
import (
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

16
var (
17
	// Default target to run when none is specified
18
	// If not set, running mage will list available targets
19
	Default        = Build
20
	app     string = "git-validation"
21
	Stdout         = cw{c: color.New(color.FgGreen), o: os.Stdout}
22
	Stderr         = cw{c: color.New(color.FgRed), o: os.Stderr}
23
)
24

25
// hack around color.Color not implementing Write()
26
type cw struct {
27
	c *color.Color
28
	o io.Writer
29
}
30

31
func (cw cw) Write(p []byte) (int, error) {
32
	i := len(p)
33
	_, err := cw.c.Fprint(cw.o, string(p)) // discarding the number of bytes written for now...
34
	return i, err
35
}
36

37
// A build step that requires additional params, or platform specific steps for example
38
func Build() error {
39
	mg.Deps(InstallDeps)
40
	fmt.Println("Building...")
41
	cmd := exec.Command("go", "build", "-v", "-o", app, ".")
42
	cmd.Stdout = Stdout
43
	cmd.Stderr = Stderr
44
	return cmd.Run()
45
}
46

47
// Vet the codes
48
func Vet() error {
49
	fmt.Println("go vet...")
50
	cmd := exec.Command("go", "vet", "./...")
51
	cmd.Stdout = Stdout
52
	cmd.Stderr = Stderr
53
	return cmd.Run()
54
}
55

56
// Run the Linters
57
func Lint() error {
58
	mg.Deps(InstallToolsLint)
59
	fmt.Println("Linting...")
60
	cmd := exec.Command("golangci-lint", "run")
61
	cmd.Stdout = Stdout
62
	cmd.Stderr = Stderr
63
	return cmd.Run()
64
}
65

66
// Run the tests available
67
func Test() error {
68
	fmt.Println("Testing...")
69
	cmd := exec.Command("go", "test", "-v", "./...")
70
	cmd.Stdout = Stdout
71
	cmd.Stderr = Stderr
72
	return cmd.Run()
73
}
74

75
// A custom install step if you need your bin someplace other than go/bin
76
func Install() error {
77
	mg.Deps(Build)
78
	fmt.Println("Installing...")
79
	return os.Rename(app, "/usr/local/bin/"+app)
80
}
81

82
// Manage your deps, or running package managers.
83
func InstallDeps() error {
84
	mg.Deps(Tidy)
85
	fmt.Println("Installing Deps...")
86
	cmd := exec.Command("go", "get", "./...")
87
	cmd.Stdout = Stdout
88
	cmd.Stderr = Stderr
89
	return cmd.Run()
90
}
91

92
// Tools used during build/dev/test
93
func InstallTools() error {
94
	mg.Deps(InstallToolsLint)
95
	return nil
96
}
97

98
func InstallToolsLint() error {
99
	fmt.Println("Installing Deps...")
100
	cmd := exec.Command("go", "install", "github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.2")
101
	cmd.Stdout = Stdout
102
	cmd.Stderr = Stderr
103
	return cmd.Run()
104
}
105

106
// Tidy go modules
107
func Tidy() error {
108
	fmt.Println("Tidy up...")
109
	cmd := exec.Command("go", "mod", "tidy")
110
	cmd.Stdout = Stdout
111
	cmd.Stderr = Stderr
112
	return cmd.Run()
113
}
114

115
// Clean up after yourself
116
func Clean() {
117
	fmt.Println("Cleaning...")
118
	os.RemoveAll(app)
119
}
120

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.