...
1
2
3
4
5 package main
6
7 import (
8 "bytes"
9 "log"
10 "os/exec"
11 "path/filepath"
12 "sort"
13 "strings"
14 )
15
16 func gopkgDir(pkgpath string) string {
17 cmd := exec.Command("go", "list", "-f", `"{{.Dir}}"`, pkgpath)
18 output, err := cmd.Output()
19 if err != nil {
20 log.Fatal(err)
21 }
22 output = bytes.TrimSpace(output)
23 output = bytes.Trim(output, `"`)
24 return string(output)
25 }
26
27 func gopkgName(pkgpath string) string {
28 cmd := exec.Command("go", "list", "-f", `"{{.Name}}"`, pkgpath)
29 output, err := cmd.Output()
30 if err != nil {
31 log.Fatal(err)
32 }
33 output = bytes.TrimSpace(output)
34 output = bytes.Trim(output, `"`)
35 return string(output)
36 }
37
38 func gopkgPath(pkgpath string) string {
39 cmd := exec.Command("go", "list", pkgpath)
40 output, err := cmd.Output()
41 if err != nil {
42 log.Fatal(err)
43 }
44
45 output = bytes.TrimSpace(output)
46 output = bytes.Trim(output, `"`)
47 return string(output)
48 }
49
50 func gopkgFiles(pkgpath string) []string {
51 cmd := exec.Command("go", "list", "-f", `"{{.GoFiles}}"`, pkgpath)
52 output, err := cmd.Output()
53 if err != nil {
54 log.Fatal(err)
55 }
56
57
58 output = bytes.TrimSpace(output)
59 output = bytes.Trim(output, `["]`)
60
61 files := strings.Split(string(output), " ")
62 for i, s := range files {
63 files[i] = s
64 }
65 sort.Strings(files)
66 return files
67 }
68
69 func gopkgFilesAbspath(pkgpath string) []string {
70 dir := gopkgDir(pkgpath)
71 files := gopkgFiles(pkgpath)
72
73 for i, s := range files {
74 files[i] = filepath.Join(dir, s)
75 }
76
77 sort.Strings(files)
78 return files
79 }
80
View as plain text