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 }