diff --git a/cmd/cfg/main.go b/cmd/cfg/main.go index 78047fc41c269ec9ef3407fa990bd3329fac3230..ccb142eef5410054bc4359e8af877717d7376604 100644 --- a/cmd/cfg/main.go +++ b/cmd/cfg/main.go @@ -1,9 +1,9 @@ package main import ( + "errors" "flag" "fmt" - "io" "os" "path/filepath" "strings" @@ -40,27 +40,19 @@ if err := fs.Parse(os.Args[1:]); err != nil { return err } + if fs.NArg() < 1 { + return errors.New("cfg requires at least an input file") + } + cleanArg := func(arg string) string { return strings.TrimPrefix(filepath.Ext(arg), ".") } - in := os.Stdin - if fs.NArg() > 0 { - fi, err := os.Open(fs.Arg(0)) - if err != nil { + in := fs.Arg(0) + if unmarshal == nil { + if err := fromFunc(cleanArg(fs.Arg(0))); err != nil { return err } - defer fi.Close() - in = fi - - if unmarshal == nil { - if err := fromFunc(cleanArg(fs.Arg(0))); err != nil { - return err - } - } - - } else if unmarshal == nil { - unmarshal = cfg.JSON.Unmarshal } out := os.Stdout @@ -83,7 +75,7 @@ } var data any - inData, err := io.ReadAll(in) + inData, err := os.ReadFile(in) if err != nil { return err }