github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/fmt/fmt.go (about)

     1  package fmt
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"fmt"
     7  
     8  	"github.com/fastly/cli/pkg/text"
     9  )
    10  
    11  // Success is a test helper used to generate output for asserting against.
    12  func Success(format string, args ...any) string {
    13  	var b bytes.Buffer
    14  	text.Success(&b, format, args...)
    15  	return b.String()
    16  }
    17  
    18  // JSON decodes then re-encodes back to JSON, with indentation matching
    19  // that of ../cmd/argparser.go's argparser.WriteJSON.
    20  func JSON(format string, args ...any) string {
    21  	var r json.RawMessage
    22  	if err := json.Unmarshal([]byte(fmt.Sprintf(format, args...)), &r); err != nil {
    23  		panic(err)
    24  	}
    25  	return EncodeJSON(r)
    26  }
    27  
    28  // EncodeJSON is a test helper that encodes any Go type into JSON.
    29  func EncodeJSON(value any) string {
    30  	var b bytes.Buffer
    31  	enc := json.NewEncoder(&b)
    32  	enc.SetIndent("", "  ")
    33  	_ = enc.Encode(value)
    34  	return b.String()
    35  }