diff options
Diffstat (limited to 'repoType.go')
| -rw-r--r-- | repoType.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/repoType.go b/repoType.go new file mode 100644 index 0000000..52846d2 --- /dev/null +++ b/repoType.go @@ -0,0 +1,48 @@ +package gitpb + +// does processing on the go.mod and go.sum files + +import ( + "os" + "strings" + + "go.wit.com/log" +) + +func (repo *Repo) RepoType() string { + if repo == nil { + return "nil" + } + if repo.GetGoPlugin() { + return "plugin" + } + if repo.GetGoBinary() { + if repo.Exists(".plugin") { + return "plugin" + } + return "binary" + } + if ok, _, _ := repo.IsProtobuf(); ok { + return "protobuf" + } + if repo.GetGoLibrary() { + return "library" + } + return "" +} + +func (repo *Repo) goListRepoType() string { + os.Setenv("GO111MODULE", "off") + cmd := []string{"go", "list", "-f", "'{{if eq .Name \"main\"}}binary{{else}}library{{end}}'"} + // cmd := []string{"go", "list", "-f", "'{{.Name}}'"} // probably use this. this just prints out the package name + // cmd := []string{"go", "list", "-f", "'{{.ImportPath}}'"} // returns go.wit.com/lib/protobuf/gitpb + + result := repo.RunQuiet(cmd) + if result.Error != nil { + log.Warn("go list binary detect failed", result.Error) + return "" + } + output := strings.TrimSpace(strings.Join(result.Stdout, "\n")) + output = strings.Trim(output, "'") + return output +} |
