github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/tools/codegen/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 ) 8 9 func main() { 10 if len(os.Args) != 5 { 11 fmt.Println("Unexpected number of arguments:", len(os.Args)-1) 12 fmt.Println("Usage: <input file> <types target file> <generator target file> <generator package>") 13 os.Exit(1) 14 } 15 16 inputFile := os.Args[1] 17 typesTargetFile := os.Args[2] 18 generatorTargetFile := os.Args[3] 19 targetPackage := os.Args[4] 20 21 absTypesTargetFile, err := filepath.Abs(typesTargetFile) 22 if err != nil { 23 fmt.Println(err) 24 os.Exit(1) 25 } 26 27 absGeneratorTargetFile, err := filepath.Abs(generatorTargetFile) 28 if err != nil { 29 fmt.Println(err) 30 os.Exit(1) 31 } 32 33 fmt.Println("writing generators to", absGeneratorTargetFile) 34 fmt.Println("writing types to", absTypesTargetFile) 35 36 err = run(inputFile, typesTargetFile, generatorTargetFile, targetPackage) 37 if err != nil { 38 fmt.Println(err) 39 os.Exit(1) 40 } 41 } 42 43 func run(inputFile string, typesTargetFile string, generatorTargetFile string, targetPackage string) error { 44 data, err := os.ReadFile(inputFile) 45 if err != nil { 46 return err 47 } 48 49 events, err := parseEventDefinitionSetForFile(inputFile, string(data)) 50 if err != nil { 51 return err 52 } 53 54 typesCode, err := generateTypes(events) 55 if err != nil { 56 return err 57 } 58 59 generatorCode, err := generateParsers(targetPackage, events) 60 if err != nil { 61 return err 62 } 63 64 err = os.WriteFile(typesTargetFile, []byte(typesCode), 0644) 65 if err != nil { 66 return err 67 } 68 69 err = os.WriteFile(generatorTargetFile, []byte(generatorCode), 0644) 70 if err != nil { 71 return err 72 } 73 74 return nil 75 }