cfg @main -
refs -
log -
-
https://git.jolheiser.com/cfg.git
Signature
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEgqEQpE3xoo1QwJO/uFOtpdp7v3oFAmZiaWUACgkQuFOtpdp7
v3rsqA//ercNbvoLXPgw8ik2fwLrkMHnG9ocqNTbykcC1hXKlI1qzKCkiJkIEJU/
HEzsUS3bJJruDSv/+Q1av7OM823xliz6RwSxRB5kN004bjZUr2RRPqaRdouxXYke
zAzuUH9YM4khbHAEhHs1bPM8wzZ0u1BrfGX1C6zQJY4461uPpb0zKQcxV1gj5T2t
pNrYm5XWDd69RAv96w/hWhtxknaD3aeKXOhbLUeauakJIjg0laKRydBUt4AhNCQL
HGvsYKEf2j7cHxGdphpJhNQl+HKG7CXI8zj7HLAOSoxv1becDbqy2Vr8UhbuY8p9
H+GDyeYqVdx7dJcgXcSMqwj16kk3so19XlWN0M9KF5JMFqAziR3BIraBmlYNU0E5
m8hoywQ7odyth9ICpYsKcPIDajRNxqv3Z+aIvMEOGSDNK11cpyBCBvKvD9fToTQk
iA0yom695xO07jEL2ar/Ax7/AxwCfpo159eXgiNEclLsLE9NGZiCSA+ji6FuQ03Q
8FCPX1HILGhhI009UFxYLOx/q3lyDNRUs0ZvDlu3cXwQ0OCPhsU3bPl89uhEsnlZ
RIzH7jqvb1cbU/OGsd3Uy83P1noC7UVBfpI8n+5Gb97t1NaYkyxugM+rl83kxvXw
5tEavXEuMlqXAhYzWenZWb7WUXSmPdFu/mHtoxO62k6u/a9qSXc=
=t0q3
-----END PGP SIGNATURE-----
diff --git a/cmd/cfg/main.go b/cmd/cfg/main.go
index ccb142eef5410054bc4359e8af877717d7376604..78047fc41c269ec9ef3407fa990bd3329fac3230 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 @@ 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 := 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 @@ }
var data any
- inData, err := os.ReadFile(in)
+ inData, err := io.ReadAll(in)
if err != nil {
return err
}