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  }