51 lines
1,011 B
Go
51 lines
1,011 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
termutil "github.com/andrew-d/go-termutil"
|
|
"gopkg.in/alecthomas/kingpin.v2"
|
|
)
|
|
|
|
var (
|
|
inFile = kingpin.Arg("file", "TOML file.").String()
|
|
quiet = kingpin.Flag("quiet", "Don't output on success.").Short('q').Bool()
|
|
)
|
|
|
|
func main() {
|
|
|
|
// support -h for --help
|
|
kingpin.CommandLine.HelpFlag.Short('h')
|
|
kingpin.Parse()
|
|
|
|
data, err := readPipeOrFile(*inFile)
|
|
if err != nil {
|
|
fmt.Println("error:", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
var f interface{}
|
|
_, err = toml.Decode(string(data), &f)
|
|
if err != nil {
|
|
fmt.Println("ERROR:", *inFile, err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
if !*quiet {
|
|
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)
|
|
}
|