also accept data from stdin
This commit is contained in:
parent
3dfe7ec69d
commit
49fbbe5545
1 changed files with 19 additions and 3 deletions
22
main.go
22
main.go
|
@ -6,11 +6,12 @@ import (
|
|||
"os"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
termutil "github.com/andrew-d/go-termutil"
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
inFile = kingpin.Arg("file", "TOML file.").Required().ExistingFile()
|
||||
inFile = kingpin.Arg("file", "TOML file.").String()
|
||||
quiet = kingpin.Flag("quiet", "Don't output on success.").Short('q').Bool()
|
||||
)
|
||||
|
||||
|
@ -20,10 +21,14 @@ func main() {
|
|||
kingpin.CommandLine.HelpFlag.Short('h')
|
||||
kingpin.Parse()
|
||||
|
||||
data, _ := ioutil.ReadFile(*inFile)
|
||||
data, err := readPipeOrFile(*inFile)
|
||||
if err != nil {
|
||||
fmt.Println("error:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var f interface{}
|
||||
_, err := toml.Decode(string(data), &f)
|
||||
_, err = toml.Decode(string(data), &f)
|
||||
if err != nil {
|
||||
fmt.Println("ERROR:", *inFile, err)
|
||||
os.Exit(1)
|
||||
|
@ -33,3 +38,14 @@ func main() {
|
|||
fmt.Println("OK:", *inFile)
|
||||
}
|
||||
}
|
||||
|
||||
// readPipeOrFile reads from stdin if pipe exists, else from provided file
|
||||
func readPipeOrFile(fileName string) ([]byte, error) {
|
||||
if !termutil.Isatty(os.Stdin.Fd()) {
|
||||
return ioutil.ReadAll(os.Stdin)
|
||||
}
|
||||
if fileName == "" {
|
||||
return nil, fmt.Errorf("no piped data and no file provided")
|
||||
}
|
||||
return ioutil.ReadFile(fileName)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue