.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / github.com / !burnt!sushi / toml@v0.3.1 / cmd / tomlv / main.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/github.com/!burnt!sushi/toml@v0.3.1/cmd/tomlv/main.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/github.com/!burnt!sushi/toml@v0.3.1/cmd/tomlv/main.go
new file mode 100644 (file)
index 0000000..c7d689a
--- /dev/null
@@ -0,0 +1,61 @@
+// Command tomlv validates TOML documents and prints each key's type.
+package main
+
+import (
+       "flag"
+       "fmt"
+       "log"
+       "os"
+       "path"
+       "strings"
+       "text/tabwriter"
+
+       "github.com/BurntSushi/toml"
+)
+
+var (
+       flagTypes = false
+)
+
+func init() {
+       log.SetFlags(0)
+
+       flag.BoolVar(&flagTypes, "types", flagTypes,
+               "When set, the types of every defined key will be shown.")
+
+       flag.Usage = usage
+       flag.Parse()
+}
+
+func usage() {
+       log.Printf("Usage: %s toml-file [ toml-file ... ]\n",
+               path.Base(os.Args[0]))
+       flag.PrintDefaults()
+
+       os.Exit(1)
+}
+
+func main() {
+       if flag.NArg() < 1 {
+               flag.Usage()
+       }
+       for _, f := range flag.Args() {
+               var tmp interface{}
+               md, err := toml.DecodeFile(f, &tmp)
+               if err != nil {
+                       log.Fatalf("Error in '%s': %s", f, err)
+               }
+               if flagTypes {
+                       printTypes(md)
+               }
+       }
+}
+
+func printTypes(md toml.MetaData) {
+       tabw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
+       for _, key := range md.Keys() {
+               fmt.Fprintf(tabw, "%s%s\t%s\n",
+                       strings.Repeat("    ", len(key)-1), key, md.Type(key...))
+       }
+       tabw.Flush()
+}