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  }