convert to pflag for better help page, actually close input file

This commit is contained in:
2025-01-21 14:54:10 -05:00
parent 2b653d0447
commit cfe803a56d
3 changed files with 48 additions and 30 deletions

4
go.mod
View File

@@ -2,4 +2,6 @@ module github.com/amberisvibin/rgb2rgb8
go 1.23.5 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

2
go.sum
View File

@@ -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 h1:REnJBycjnvg0AFErbLx2GCmLLar8brlqm62kOKnRsGs=
github.com/wayneashleyberry/truecolor v1.0.1/go.mod h1:fyL3jRES70g94n+Eu+XLhXYvcseza55ph8zlkmUKW7Q= github.com/wayneashleyberry/truecolor v1.0.1/go.mod h1:fyL3jRES70g94n+Eu+XLhXYvcseza55ph8zlkmUKW7Q=

View File

@@ -3,47 +3,59 @@ package main
import ( import (
"bufio" "bufio"
"encoding/hex" "encoding/hex"
"flag"
"fmt" "fmt"
"github.com/ogier/pflag"
"github.com/wayneashleyberry/truecolor/pkg/color" "github.com/wayneashleyberry/truecolor/pkg/color"
"math" "math"
"os" "os"
) )
var outputFile string var (
var verbose bool outputFile string
var version bool verbose bool
var colors bool version bool
colors bool
)
func init() { func init() {
const ( pflag.StringVarP(
outputDefault = "out.hex" &outputFile,
outputUsage = "output file" "output",
verboseDefault = false "o",
verboseUsage = "verbose output" "out.hex",
versionDefault = false "output file",
versionUsage = "version info" )
colorsDefault = false pflag.BoolVarP(
colorsUsage = "print colors to terminal (needs 24 bit color support)" &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() { func main() {
flag.Usage = func() { pflag.Usage = func() {
w := flag.CommandLine.Output() 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(w, "%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")
fmt.Fprintf(w, "Usage:\n") pflag.PrintDefaults()
flag.PrintDefaults()
} }
flag.Parse() pflag.Parse()
if version { if version {
fmt.Println("rgb2rgb8 v0.1") fmt.Println("rgb2rgb8 v0.1")
@@ -52,12 +64,12 @@ func main() {
os.Exit(0) os.Exit(0)
} }
if len(flag.Args()) == 0 { if len(pflag.Args()) == 0 {
fmt.Println("Error: No file specified.") fmt.Println("Error: No file specified.")
os.Exit(1) os.Exit(1)
} }
var inputFile = flag.Args()[0] var inputFile = pflag.Args()[0]
if verbose { if verbose {
fmt.Println("outputFile:", outputFile) fmt.Println("outputFile:", outputFile)
@@ -71,6 +83,8 @@ func main() {
os.Exit(2) os.Exit(2)
} }
defer input.Close()
//create output file //create output file
output, err := os.OpenFile(outputFile, os.O_WRONLY|os.O_CREATE, 0644) output, err := os.OpenFile(outputFile, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil { if err != nil {