/
common.go
61 lines (57 loc) · 1.97 KB
/
common.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
package generator
import (
"fmt"
"github.com/jenkins-x/jx/cmd/codegen/util"
jxutil "github.com/jenkins-x/jx/pkg/util"
"github.com/pkg/errors"
"path/filepath"
"strings"
)
func defaultGenerate(generator string, name string, groupsWithVersions []string, inputPackage string,
outputPackage string, outputBase string, boilerplateFile string, args ...string) error {
util.AppLogger().Infof("generating %s structs for %s at %s\n", name, groupsWithVersions, outputPackage)
generateCommand := jxutil.Command{
Name: filepath.Join(util.GoPathBin(), generator),
Args: []string{
"--output-base",
outputBase,
"--go-header-file",
boilerplateFile,
},
Env: map[string]string{
"GO111MODULE": "on",
},
}
if name == "clientset" {
inputDirs := make([]string, 0)
for _, gv := range groupsWithVersions {
groupVersion := strings.Split(gv, ":")
if len(groupVersion) != 2 {
return errors.Errorf("argument %s must be like cheese:v1", gv)
}
inputDirs = append(inputDirs, fmt.Sprintf("%s/%s", groupVersion[0], groupVersion[1]))
}
inputDirsStr := strings.Join(inputDirs, ",")
generateCommand.Args = append(generateCommand.Args, "--input", inputDirsStr, "--input-base", inputPackage)
} else {
inputDirs := make([]string, 0)
for _, gv := range groupsWithVersions {
groupVersion := strings.Split(gv, ":")
if len(groupVersion) != 2 {
return errors.Errorf("argument %s must be like cheese:v1", gv)
}
inputDirs = append(inputDirs, fmt.Sprintf("%s/%s/%s", inputPackage, groupVersion[0], groupVersion[1]))
}
inputDirsStr := strings.Join(inputDirs, ",")
generateCommand.Args = append(generateCommand.Args, "--input-dirs", inputDirsStr)
}
for _, arg := range args {
generateCommand.Args = append(generateCommand.Args, arg)
}
util.AppLogger().Debugf("running %s\n", generateCommand.String())
out, err := generateCommand.RunWithoutRetry()
if err != nil {
return errors.Wrapf(err, "running %s, output %s", generateCommand.String(), out)
}
return nil
}