From ae439db5e5064878acec083cefb2473ed3c61938 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Thu, 6 Jun 2024 20:59:01 -0500 Subject: [PATCH] feat: stdin default Signed-off-by: jolheiser --- cmd/cfg/main.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/cmd/cfg/main.go b/cmd/cfg/main.go index ccb142e..78047fc 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,19 +40,27 @@ func maine() error { 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 := fs.Arg(0) - if unmarshal == nil { - if err := fromFunc(cleanArg(fs.Arg(0))); err != nil { + in := os.Stdin + if fs.NArg() > 0 { + fi, err := os.Open(fs.Arg(0)) + if 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 @@ -75,7 +83,7 @@ func maine() error { var data any - inData, err := os.ReadFile(in) + inData, err := io.ReadAll(in) if err != nil { return err }