package main import ( "flag" "fmt" "io" "log" "os" "text/template" _ "embed" ) //go:embed class.tmpl var templatestr string var Error *log.Logger var Warning *log.Logger func init() { log.SetFlags(log.Lmicroseconds | log.Lshortfile) logger := io.MultiWriter(os.Stdout) log.SetOutput(logger) Error = log.New(io.MultiWriter(os.Stderr, os.Stdout), fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) Warning = log.New(io.MultiWriter(os.Stdout), fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) } func main() { flag.Parse() files := flag.Args() // if len(files) == 0 { // Error.Printf("No files specified") // flag.Usage() // return // } test := Class{ ClassName: "Test", Fields: []Field{ {Name: "a", Type: "int", Comment: "test"}, {Name: "b", Type: "string", Comment: "test"}, }, Methods: []Method{ { Name: "test", Params: []Param{ {Name: "a", Type: "int", Comment: "test"}, {Name: "b", Type: "string", Comment: "test"}, }, Returns: []Return{ {Type: "int", Comment: "test"}, {Type: "string", Comment: "test"}, }, Comment: "test", }, }, } ltemplate, err := template.New("class").Parse(templatestr) if err != nil { Error.Printf("Error parsing template: %v", err) return } log.Printf("%#v", ltemplate) ltemplate.Execute(os.Stdout, test) for _, file := range files { fmt.Println(file) } }