github.com/landoop/schema-registry@v0.0.0-20190327143759-50a5701c1891/schema-registry-cli/cmd/helpers.go (about)

     1  package cmd
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"io/ioutil"
     7  	"log"
     8  	"os"
     9  
    10  	"github.com/hokaccha/go-prettyjson"
    11  
    12  	schemaregistry "github.com/landoop/schema-registry"
    13  	"github.com/spf13/viper"
    14  )
    15  
    16  func stdinToString() string {
    17  	bs, err := ioutil.ReadAll(bufio.NewReader(os.Stdin))
    18  	if err != nil {
    19  		panic(err)
    20  	}
    21  	return string(bs)
    22  }
    23  
    24  func printSchema(sch schemaregistry.Schema) {
    25  	log.Printf("version: %d\n", sch.Version)
    26  	log.Printf("id: %d\n", sch.ID)
    27  
    28  	pretty, err := prettyjson.Format([]byte(sch.Schema))
    29  	if err != nil {
    30  		fmt.Println(sch.Schema) //isn't a json object, which is legal
    31  		return
    32  	}
    33  	os.Stdout.Write(pretty)
    34  	os.Stdout.WriteString("\n")
    35  }
    36  
    37  func getByID(id int) error {
    38  	cl := assertClient()
    39  	sch, err := cl.GetSchemaByID(id)
    40  	if err != nil {
    41  		return err
    42  	}
    43  	fmt.Println(sch)
    44  	return nil
    45  }
    46  
    47  func getLatestBySubject(subj string) error {
    48  	cl := assertClient()
    49  	sch, err := cl.GetLatestSchema(subj)
    50  	if err != nil {
    51  		return err
    52  	}
    53  	printSchema(sch)
    54  	return nil
    55  }
    56  
    57  func getBySubjectVersion(subj string, ver int) error {
    58  	cl := assertClient()
    59  	sch, err := cl.GetSchemaBySubject(subj, ver)
    60  	if err != nil {
    61  		return err
    62  	}
    63  	printSchema(sch)
    64  	return nil
    65  }
    66  
    67  func printConfig(cfg schemaregistry.Config, subj string) {
    68  	if subj == "" {
    69  		subj = "global"
    70  	}
    71  	if cfg.CompatibilityLevel == "" {
    72  		cfg.CompatibilityLevel = "not defined, using global"
    73  	}
    74  	fmt.Printf("%s compatibility-level: %s\n", subj, cfg.CompatibilityLevel)
    75  }
    76  
    77  func getConfig(subj string) error {
    78  	cl := assertClient()
    79  	cfg, err := cl.GetConfig(subj)
    80  	if err != nil {
    81  		return err
    82  	}
    83  	printConfig(cfg, subj)
    84  	return nil
    85  }
    86  
    87  func assertClient() *schemaregistry.Client {
    88  	c, err := schemaregistry.NewClient(viper.GetString("url"))
    89  	if err != nil {
    90  		fmt.Println(err)
    91  		os.Exit(-1)
    92  	}
    93  	return c
    94  }