Skip to content

Commit 1121f81

Browse files
committed
Make tomlv read from stdin
1 parent f225e86 commit 1121f81

1 file changed

Lines changed: 39 additions & 21 deletions

File tree

cmd/tomlv/main.go

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"errors"
77
"flag"
88
"fmt"
9+
"io"
910
"log"
1011
"os"
1112
"path"
@@ -38,32 +39,49 @@ func usage() {
3839
}
3940

4041
func main() {
41-
if flag.NArg() < 1 {
42-
flag.Usage()
42+
if flag.NArg() < 1 || flag.Args()[0] == "-" {
43+
read("-", os.Stdin)
44+
return
4345
}
46+
4447
for _, f := range flag.Args() {
45-
var tmp any
46-
start := time.Now()
47-
md, err := toml.DecodeFile(f, &tmp)
48+
fp, err := os.Open(f)
4849
if err != nil {
49-
var perr toml.ParseError
50-
if errors.As(err, &perr) {
51-
log.Fatalf("Error in '%s': %s", f, perr.ErrorWithPosition())
52-
}
53-
log.Fatalf("Error in '%s': %s", f, err)
54-
}
55-
if flagTime {
56-
fmt.Printf("%f\n", time.Since(start).Seconds())
57-
}
58-
if flagTypes {
59-
printTypes(md)
50+
log.Fatalf("reading %q: %s", f, err)
6051
}
61-
if flagJSON {
62-
enc := json.NewEncoder(os.Stdout)
63-
enc.SetEscapeHTML(false)
64-
enc.SetIndent("", " ")
65-
enc.Encode(tmp)
52+
read(f, fp)
53+
fp.Close()
54+
}
55+
}
56+
57+
func read(f string, fp io.Reader) {
58+
// Read data first so -time doesn't include the time it took to read.
59+
d, err := io.ReadAll(fp)
60+
if err != nil {
61+
log.Fatalf("Error in '%s': %s", f, err)
62+
}
63+
64+
var tmp any
65+
start := time.Now()
66+
md, err := toml.Decode(string(d), &tmp)
67+
if err != nil {
68+
var perr toml.ParseError
69+
if errors.As(err, &perr) {
70+
log.Fatalf("Error in '%s': %s", f, perr.ErrorWithPosition())
6671
}
72+
log.Fatalf("Error in '%s': %s", f, err)
73+
}
74+
if flagTime {
75+
fmt.Printf("%f\n", time.Since(start).Seconds())
76+
}
77+
if flagTypes {
78+
printTypes(md)
79+
}
80+
if flagJSON {
81+
enc := json.NewEncoder(os.Stdout)
82+
enc.SetEscapeHTML(false)
83+
enc.SetIndent("", " ")
84+
enc.Encode(tmp)
6785
}
6886
}
6987

0 commit comments

Comments
 (0)