package main
import (
"fmt"
"os"
"github.com/grafana/agent/pkg/river/parser"
"github.com/grafana/agent/pkg/river/token/builder"
"github.com/grafana/agent/pkg/river/vm"
)
func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
}
}
func run() error {
args := os.Args[1:]
if len(args) != 1 {
return fmt.Errorf("usage: rivereval [file]")
}
contents, err := os.ReadFile(args[0])
if err != nil {
return err
}
node, err := parser.ParseExpression(string(contents))
if err != nil {
return err
}
eval := vm.New(node)
var v interface{}
if err := eval.Evaluate(nil, &v); err != nil {
return err
}
expr := builder.NewExpr()
expr.SetValue(v)
_, _ = expr.WriteTo(os.Stdout)
fmt.Println()
return nil
}