forked from elastic/integrations
-
Notifications
You must be signed in to change notification settings - Fork 1
/
magefile.go
111 lines (92 loc) · 2.23 KB
/
magefile.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License;
// you may not use this file except in compliance with the Elastic License.
// +build mage
package main
import (
"os"
"path/filepath"
"github.com/magefile/mage/mg"
"github.com/magefile/mage/sh"
"github.com/pkg/errors"
)
var (
// GoImportsLocalPrefix is a string prefix matching imports that should be
// grouped after third-party packages.
GoImportsLocalPrefix = "github.com/elastic"
buildDir = "./build"
)
func Check() error {
mg.Deps(build)
mg.Deps(format)
mg.Deps(modTidy)
return nil
}
func Clean() error {
return os.RemoveAll(buildDir)
}
func ImportBeats() error {
args := []string{"run", "./dev/import-beats/"}
if os.Getenv("SKIP_KIBANA") == "true" {
args = append(args, "-skipKibana")
}
if os.Getenv("PACKAGES") != "" {
args = append(args, "-packages", os.Getenv("PACKAGES"))
}
args = append(args, "*.go")
return sh.Run("go", args...)
}
func build() error {
mg.Deps(buildImportBeats)
return nil
}
func buildImportBeats() error {
err := sh.Run("go", "build", "-o", "/dev/null", "./dev/import-beats")
if err != nil {
return errors.Wrap(err, "building import-beats failed")
}
return nil
}
func format() {
mg.Deps(addLicenseHeaders)
mg.Deps(goImports)
}
func addLicenseHeaders() error {
return sh.RunV("go-licenser", "-license", "Elastic")
}
func goImports() error {
goFiles, err := findFilesRecursive(func(path string, _ os.FileInfo) bool {
return filepath.Ext(path) == ".go"
})
if err != nil {
return err
}
if len(goFiles) == 0 {
return nil
}
args := append(
[]string{"-local", GoImportsLocalPrefix, "-l", "-w"},
goFiles...,
)
return sh.RunV("goimports", args...)
}
func findFilesRecursive(match func(path string, info os.FileInfo) bool) ([]string, error) {
var matches []string
err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.Mode().IsRegular() {
// continue
return nil
}
if match(filepath.ToSlash(path), info) {
matches = append(matches, path)
}
return nil
})
return matches, err
}
func modTidy() error {
return sh.RunV("go", "mod", "tidy")
}