mirror of https://github.com/sirupsen/logrus.git
reduce the list of cross build target
This commit is contained in:
parent
accc7da667
commit
51f2599bdd
|
@ -1,3 +1,4 @@
|
|||
//go:build mage
|
||||
// +build mage
|
||||
|
||||
package main
|
||||
|
@ -7,13 +8,34 @@ import (
|
|||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"sort"
|
||||
|
||||
"github.com/magefile/mage/mg"
|
||||
"github.com/magefile/mage/sh"
|
||||
)
|
||||
|
||||
func intersect(a, b []string) []string {
|
||||
sort.Strings(a)
|
||||
sort.Strings(b)
|
||||
|
||||
res := make([]string, 0, func() int {
|
||||
if len(a) < len(b) {
|
||||
return len(a)
|
||||
}
|
||||
return len(b)
|
||||
}())
|
||||
|
||||
for _, v := range a {
|
||||
idx := sort.SearchStrings(b, v)
|
||||
if idx < len(b) && b[idx] == v {
|
||||
res = append(res, v)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
// getBuildMatrix returns the build matrix from the current version of the go compiler
|
||||
func getBuildMatrix() (map[string][]string, error) {
|
||||
func getFullBuildMatrix() (map[string][]string, error) {
|
||||
jsonData, err := sh.Output("go", "tool", "dist", "list", "-json")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -38,6 +60,31 @@ func getBuildMatrix() (map[string][]string, error) {
|
|||
return matrix, nil
|
||||
}
|
||||
|
||||
func getBuildMatrix() (map[string][]string, error) {
|
||||
minimalMatrix := map[string][]string{
|
||||
"linux": []string{"amd64"},
|
||||
"darwin": []string{"amd64", "arm64"},
|
||||
"freebsd": []string{"amd64"},
|
||||
"js": []string{"wasm"},
|
||||
"solaris": []string{"amd64"},
|
||||
"windows": []string{"amd64", "arm64"},
|
||||
}
|
||||
|
||||
fullMatrix, err := getFullBuildMatrix()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for os, arches := range minimalMatrix {
|
||||
if fullV, ok := fullMatrix[os]; !ok {
|
||||
delete(minimalMatrix, os)
|
||||
} else {
|
||||
minimalMatrix[os] = intersect(arches, fullV)
|
||||
}
|
||||
}
|
||||
return minimalMatrix, nil
|
||||
}
|
||||
|
||||
func CrossBuild() error {
|
||||
matrix, err := getBuildMatrix()
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue