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 }