a3d46d52a8
test / release-check (push) Has been skipped
test / 1.25/macos-14 (push) Has been cancelled
test / 1.25/macos-latest (push) Has been cancelled
test / 1.25/ubuntu-latest (push) Has been cancelled
test / 1.25/windows-latest (push) Has been cancelled
test / 1.26/macos-14 (push) Has been cancelled
test / 1.26/macos-latest (push) Has been cancelled
test / 1.26/ubuntu-latest (push) Has been cancelled
test / 1.26/windows-latest (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
// Package tomljson is a program that converts TOML to JSON.
|
|
//
|
|
// # Usage
|
|
//
|
|
// Reading from stdin:
|
|
//
|
|
// cat file.toml | tomljson > file.json
|
|
//
|
|
// Reading from a file:
|
|
//
|
|
// tomljson file.toml > file.json
|
|
//
|
|
// # Installation
|
|
//
|
|
// Using Go:
|
|
//
|
|
// go install git.ostiwe.com/ostiwe/go-toml/v2/cmd/tomljson@latest
|
|
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
|
|
"git.ostiwe.com/ostiwe/go-toml/v2"
|
|
"git.ostiwe.com/ostiwe/go-toml/v2/internal/cli"
|
|
)
|
|
|
|
const usage = `tomljson can be used in two ways:
|
|
Reading from stdin:
|
|
cat file.toml | tomljson > file.json
|
|
|
|
Reading from a file:
|
|
tomljson file.toml > file.json
|
|
`
|
|
|
|
func main() {
|
|
p := cli.Program{
|
|
Usage: usage,
|
|
Fn: convert,
|
|
}
|
|
p.Execute()
|
|
}
|
|
|
|
func convert(r io.Reader, w io.Writer) error {
|
|
var v interface{}
|
|
|
|
d := toml.NewDecoder(r)
|
|
err := d.Decode(&v)
|
|
if err != nil {
|
|
var derr *toml.DecodeError
|
|
if errors.As(err, &derr) {
|
|
row, col := derr.Position()
|
|
return fmt.Errorf("%s\nerror occurred at row %d column %d", derr.String(), row, col)
|
|
}
|
|
return err
|
|
}
|
|
|
|
e := json.NewEncoder(w)
|
|
e.SetIndent("", " ")
|
|
return e.Encode(v)
|
|
}
|