in cmd/celfmt/main.go [48:110]
func Main() int {
in := flag.String("i", "", "input file stdin if empty")
out := flag.String("o", "", "output file stdout if empty")
agent := flag.Bool("agent", false, "format agent config")
flag.Parse()
var r io.Reader
if *in == "" {
r = os.Stdin
} else {
f, err := os.Open(*in)
if err != nil {
log.Printf("could not open input file: %v", err)
return 1
}
defer f.Close()
r = f
}
var buf bytes.Buffer
_, err := io.Copy(&buf, r)
if err != nil {
log.Printf("could not read input: %v", err)
return 1
}
var w io.Writer
if *out == "" {
w = os.Stdout
} else {
f, err := os.Create(*out)
if err != nil {
log.Printf("could not open output file: %v", err)
return 1
}
defer func() {
f.Sync()
f.Close()
}()
w = f
}
if !*agent {
err = celFmt(w, buf.String())
if err != nil {
log.Printf("failed to format program: %v", err)
return 1
}
fmt.Fprintln(w)
} else {
ast, err := parser.Parse(buf.String())
if err != nil {
panic(err)
}
v := &visitor{}
ast.Accept(v)
if v.err != nil {
log.Fatal(v.err)
}
fmt.Fprint(w, strings.ReplaceAll(buf.String(), v.old, v.new))
}
return 0
}