mirror of https://git.jolheiser.com/cfg.git
parent
48b98f65aa
commit
ae439db5e5
|
@ -1,9 +1,9 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -40,21 +40,29 @@ func maine() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if fs.NArg() < 1 {
|
|
||||||
return errors.New("cfg requires at least an input file")
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanArg := func(arg string) string {
|
cleanArg := func(arg string) string {
|
||||||
return strings.TrimPrefix(filepath.Ext(arg), ".")
|
return strings.TrimPrefix(filepath.Ext(arg), ".")
|
||||||
}
|
}
|
||||||
|
|
||||||
in := fs.Arg(0)
|
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 unmarshal == nil {
|
||||||
if err := fromFunc(cleanArg(fs.Arg(0))); err != nil {
|
if err := fromFunc(cleanArg(fs.Arg(0))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if unmarshal == nil {
|
||||||
|
unmarshal = cfg.JSON.Unmarshal
|
||||||
|
}
|
||||||
|
|
||||||
out := os.Stdout
|
out := os.Stdout
|
||||||
if fs.NArg() > 1 {
|
if fs.NArg() > 1 {
|
||||||
fi, err := os.Create(fs.Arg(1))
|
fi, err := os.Create(fs.Arg(1))
|
||||||
|
@ -75,7 +83,7 @@ func maine() error {
|
||||||
|
|
||||||
var data any
|
var data any
|
||||||
|
|
||||||
inData, err := os.ReadFile(in)
|
inData, err := io.ReadAll(in)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue