github.com/hamba/avro/v2@v2.22.1-0.20240518180522-aff3955acf7d/cmd/avrosv/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "io" 7 "os" 8 9 "github.com/hamba/avro/v2" 10 ) 11 12 type config struct { 13 Verbose bool 14 } 15 16 func main() { 17 os.Exit(realMain(os.Args, os.Stdout, os.Stderr)) 18 } 19 20 func realMain(args []string, stdout, stderr io.Writer) int { 21 var cfg config 22 flgs := flag.NewFlagSet("avrosv", flag.ExitOnError) 23 flgs.SetOutput(stderr) 24 flgs.BoolVar(&cfg.Verbose, "v", false, "Verbose output (dump final parsed schema).") 25 flgs.Usage = func() { 26 _, _ = fmt.Fprintln(stderr, "Usage: avrosv [options] schemas") 27 _, _ = fmt.Fprintln(stderr, "Options:") 28 flgs.PrintDefaults() 29 _, _ = fmt.Fprintln(stderr, "\nSchemas are processed in the order they appear.") 30 } 31 if err := flgs.Parse(args[1:]); err != nil { 32 return 1 33 } 34 if flgs.NArg() < 1 { 35 _, _ = fmt.Fprintln(stderr, "Error: at least one schema is required") 36 return 1 37 } 38 39 schema, err := avro.ParseFiles(flgs.Args()...) 40 if err != nil { 41 _, _ = fmt.Fprintf(stderr, "Error: %v\n", err) 42 return 2 43 } 44 45 if cfg.Verbose { 46 fmt.Fprintln(stdout, schema) 47 } 48 49 return 0 50 }