From cfe803a56dc204b375754afe078d1dbce0f80da0 Mon Sep 17 00:00:00 2001 From: Amber Date: Tue, 21 Jan 2025 14:54:10 -0500 Subject: [PATCH] convert to pflag for better help page, actually close input file --- go.mod | 4 ++- go.sum | 2 ++ rgb2rgb8.go | 72 ++++++++++++++++++++++++++++++++--------------------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index ad5b973..17f8d09 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,6 @@ module github.com/amberisvibin/rgb2rgb8 go 1.23.5 -require github.com/wayneashleyberry/truecolor v1.0.1 // indirect +require github.com/wayneashleyberry/truecolor v1.0.1 + +require github.com/ogier/pflag v0.0.1 diff --git a/go.sum b/go.sum index b16ffaa..52c09b3 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,4 @@ +github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= +github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/wayneashleyberry/truecolor v1.0.1 h1:REnJBycjnvg0AFErbLx2GCmLLar8brlqm62kOKnRsGs= github.com/wayneashleyberry/truecolor v1.0.1/go.mod h1:fyL3jRES70g94n+Eu+XLhXYvcseza55ph8zlkmUKW7Q= diff --git a/rgb2rgb8.go b/rgb2rgb8.go index 4d45f4a..de0626b 100644 --- a/rgb2rgb8.go +++ b/rgb2rgb8.go @@ -3,47 +3,59 @@ package main import ( "bufio" "encoding/hex" - "flag" "fmt" + "github.com/ogier/pflag" "github.com/wayneashleyberry/truecolor/pkg/color" "math" "os" ) -var outputFile string -var verbose bool -var version bool -var colors bool +var ( + outputFile string + verbose bool + version bool + colors bool +) func init() { - const ( - outputDefault = "out.hex" - outputUsage = "output file" - verboseDefault = false - verboseUsage = "verbose output" - versionDefault = false - versionUsage = "version info" - colorsDefault = false - colorsUsage = "print colors to terminal (needs 24 bit color support)" + pflag.StringVarP( + &outputFile, + "output", + "o", + "out.hex", + "output file", + ) + pflag.BoolVarP( + &verbose, + "verbose", + "v", + false, + "verbose output", + ) + + pflag.BoolVarP( + &colors, + "colors", + "c", + false, + "print colors to terminal (needs 24 bit color support)", + ) + pflag.BoolVar( + &version, + "version", + false, + "version info", ) - flag.StringVar(&outputFile, "output", outputDefault, outputUsage) - flag.StringVar(&outputFile, "o", outputDefault, outputUsage+" (shorthand)") - flag.BoolVar(&verbose, "verbose", verboseDefault, verboseUsage) - flag.BoolVar(&verbose, "v", verboseDefault, verboseUsage+" (shorthand)") - flag.BoolVar(&colors, "colors", colorsDefault, colorsUsage) - flag.BoolVar(&colors, "c", colorsDefault, colorsUsage) - flag.BoolVar(&version, "version", versionDefault, versionUsage) } func main() { - flag.Usage = func() { - w := flag.CommandLine.Output() - fmt.Fprintf(w, "%s is a utility that converts RGB24 hex palette files to 8bit 3-3-2 RGB.\n", os.Args[0]) - fmt.Fprintf(w, "Usage:\n") - flag.PrintDefaults() + pflag.Usage = func() { + fmt.Fprintf(os.Stderr, "%s is a utility that converts RGB24 hex palette files to 8bit 3-3-2 RGB.\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage:\n") + pflag.PrintDefaults() } - flag.Parse() + pflag.Parse() if version { fmt.Println("rgb2rgb8 v0.1") @@ -52,12 +64,12 @@ func main() { os.Exit(0) } - if len(flag.Args()) == 0 { + if len(pflag.Args()) == 0 { fmt.Println("Error: No file specified.") os.Exit(1) } - var inputFile = flag.Args()[0] + var inputFile = pflag.Args()[0] if verbose { fmt.Println("outputFile:", outputFile) @@ -71,6 +83,8 @@ func main() { os.Exit(2) } + defer input.Close() + //create output file output, err := os.OpenFile(outputFile, os.O_WRONLY|os.O_CREATE, 0644) if err != nil {