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 }