code: func cliJSON(ctx *cli.Context, cmd, line, url string, argv *argT) error {
  	// Recursive JSON printer.
  	var pprint func(indent int, m map[string]interface{})
  	pprint = func(indent int, m map[string]interface{}) {
  		indentation := "  "
  		for k, v := range m {
  			if v == nil {
  				continue
  			}
  			switch v.(type) {
  			case map[string]interface{}:
  				for i := 0; i < indent; i++ {
  					fmt.Print(indentation)
  				}
  				fmt.Printf("%s:\n", k)
  				pprint(indent+1, v.(map[string]interface{}))
  			default:
  				for i := 0; i < indent; i++ {
  					fmt.Print(indentation)
  				}
  				fmt.Printf("%s: %v\n", k, v)
  			}
  		}
  	}
  
  	client := http.Client{Transport: &http.Transport{
  		TLSClientConfig: &tls.Config{InsecureSkipVerify: argv.Insecure},
  	}}
  	resp, err := client.Get(url)
  	if err != nil {
  		return err
  	}
  	defer resp.Body.Close()
  
  	if resp.StatusCode == http.StatusUnauthorized {
  		return fmt.Errorf("unauthorized")
  	}
  
  	body, err := ioutil.ReadAll(resp.Body)
  	if err != nil {
  		return err
  	}
  
  	ret := make(map[string]interface{})
  	if err := json.Unmarshal(body, &ret); err != nil {
  		return err
  	}
  
  	// Specific key requested?
  	parts := strings.Split(line, " ")
  	if len(parts) >= 2 {
  		ret = map[string]interface{}{parts[1]: ret[parts[1]]}
  	}
  	pprint(0, ret)
  
  	return nil
  }
docs: // cliJSON fetches JSON from a URL, and displays it at the CLI.