// Command xtgen generates bindings from the pinned xcb-proto XML. package main import ( "flag" "fmt" "os" "path/filepath" ) func main() { all := flag.Bool("all", false, "process all vendored modules") flag.Parse() paths := flag.Args() if *all { var err error paths, err = filepath.Glob("spec/xml/*.xml") if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } if len(paths) == 0 { fmt.Fprintln(os.Stderr, "xtgen: supply XML paths or -all") os.Exit(1) } if *all { modules, err := loadModules() if err == nil { err = emitTypes(modules) } if err == nil { err = emitRequests(modules) } if err == nil { err = emitReplies(modules) } if err == nil { err = emitEvents(modules) } if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } return } for _, path := range paths { if _, err := parseFile(path); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } }