github.com/zxy12/go_duplicate_112_new@v0.0.0-20200807091221-747231827200/src/cmd/dist/cmdlist.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "flag" 6 "os" 7 "sort" 8 "strings" 9 ) 10 11 // cmdlist lists all supported platforms. 12 func _cmdlist() { 13 jsonFlag := flag.Bool("json", false, "produce JSON output") 14 xflagparse(0) 15 16 var plats []string 17 for p := range cgoEnabled { 18 if incomplete[p] { 19 continue 20 } 21 plats = append(plats, p) 22 } 23 sort.Strings(plats) 24 25 if !*jsonFlag { 26 for _, p := range plats { 27 xprintf("%s\n", p) 28 } 29 return 30 } 31 32 type jsonResult struct { 33 GOOS string 34 GOARCH string 35 CgoSupported bool 36 } 37 var results []jsonResult 38 for _, p := range plats { 39 fields := strings.Split(p, "/") 40 results = append(results, jsonResult{ 41 GOOS: fields[0], 42 GOARCH: fields[1], 43 CgoSupported: cgoEnabled[p]}) 44 } 45 out, err := json.MarshalIndent(results, "", "\t") 46 if err != nil { 47 fatalf("json marshal error: %v", err) 48 } 49 //xprintf(string(out)) 50 if _, err := os.Stdout.Write(out); err != nil { 51 fatalf("write failed: %v", err) 52 } 53 }