From 5a2c8b726fac4e0c44f3c9e9fb67436c8262a7f9 Mon Sep 17 00:00:00 2001 From: mappu Date: Fri, 20 Sep 2024 18:51:47 +1200 Subject: [PATCH] uic: add main flag handling, add go:generate comment with preserved flags --- cmd/miqt-uic/main.go | 33 ++++++++++++++++++++++++--------- cmd/miqt-uic/ui2go.go | 9 +++++++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/cmd/miqt-uic/main.go b/cmd/miqt-uic/main.go index 73276701..6059ba46 100644 --- a/cmd/miqt-uic/main.go +++ b/cmd/miqt-uic/main.go @@ -2,33 +2,48 @@ package main import ( "encoding/xml" + "flag" "fmt" "io/ioutil" + "os" + "strings" ) func main() { - in, err := ioutil.ReadFile(`test.ui`) + inFile := flag.String("InFile", "", "Input .ui file") + outFile := flag.String("OutFile", "-", "Output .go file, or - for stdout") + packageName := flag.String("Package", "main", "Custom package name") + flag.Parse() + + if *inFile == "" { + flag.Usage() + os.Exit(1) + } + + inXml, err := ioutil.ReadFile(*inFile) if err != nil { panic(err) } var parsed UiFile - err = xml.Unmarshal(in, &parsed) + err = xml.Unmarshal(inXml, &parsed) if err != nil { panic(err) } - ret, err := xml.MarshalIndent(parsed, "", " ") + gosrc, err := generate(*packageName, strings.Join(os.Args[1:], " "), parsed) if err != nil { panic(err) } - fmt.Println(string(ret)) + if *outFile == "-" { + fmt.Println(string(gosrc)) - gosrc, err := generate("main", parsed) - if err != nil { - panic(err) + } else { + + err = ioutil.WriteFile(*outFile, gosrc, 0644) + if err != nil { + panic(err) + } } - - fmt.Println(string(gosrc)) } diff --git a/cmd/miqt-uic/ui2go.go b/cmd/miqt-uic/ui2go.go index 31fed97c..81b49c37 100644 --- a/cmd/miqt-uic/ui2go.go +++ b/cmd/miqt-uic/ui2go.go @@ -32,9 +32,14 @@ func collectClassNames(u UiFile) []string { return ret } -func generate(packageName string, u UiFile) ([]byte, error) { +func generate(packageName string, goGenerateArgs string, u UiFile) ([]byte, error) { ret := strings.Builder{} - ret.WriteString(`package ` + packageName + ` + ret.WriteString(`// Generated by miqt-uic. To update this file, edit the .ui file in +// Qt Designer, and then run 'go generate'. +// +//go:` + `generate miqt-uic ` + goGenerateArgs + ` + +package ` + packageName + ` import ( "github.com/mappu/miqt"