github.com/mdlayher/yamlnetlink@v0.0.0-20221112165554-61a6fe600cd8/cmd/yamlnetlink-go/main.go (about) 1 // Command yamlnetlink-go generates Go code from YAML netlink specifications. 2 package main 3 4 import ( 5 "flag" 6 "log" 7 "os" 8 9 "github.com/mdlayher/yamlnetlink" 10 ) 11 12 func main() { 13 log.SetFlags(0) 14 15 pFlag := flag.String("p", "", "optional: specify a package name for the generated code (default: use YAML netlink spec name)") 16 flag.Parse() 17 18 path := flag.Arg(0) 19 if path == "" { 20 log.Fatal("must specify a YAML netlink file:\n$ yamlnetlink-go nlctrl.yaml") 21 } 22 23 f, err := os.Open(path) 24 if err != nil { 25 log.Fatalf("failed to open file: %v", err) 26 } 27 defer f.Close() 28 29 s, err := yamlnetlink.Parse(f) 30 if err != nil { 31 log.Fatalf("failed to parse YAML netlink file: %v", err) 32 } 33 _ = f.Close() 34 35 code, err := yamlnetlink.Generate(s, &yamlnetlink.Config{Package: *pFlag}) 36 if err != nil { 37 log.Fatalf("failed to generate code: %v", err) 38 } 39 40 _, _ = os.Stdout.Write(code) 41 }