47 lines
710 B
Go
47 lines
710 B
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"code.squareroundforest.org/arpio/treerack"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func format(name string) (err error) {
|
|
var inBytes []byte
|
|
if inBytes, err = os.ReadFile(name); err != nil {
|
|
return
|
|
}
|
|
|
|
in := bytes.NewBuffer(inBytes)
|
|
s := new(treerack.Syntax)
|
|
if err = s.ReadSyntax(in); err != nil {
|
|
return
|
|
}
|
|
|
|
out := bytes.NewBuffer(nil)
|
|
if err = s.Format(out); err != nil {
|
|
return
|
|
}
|
|
|
|
if bytes.Equal(out.Bytes(), inBytes) {
|
|
return
|
|
}
|
|
|
|
fmt.Fprintln(os.Stderr, name)
|
|
if err = os.WriteFile(name, out.Bytes(), 0644); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func main() {
|
|
for _, f := range os.Args[1:] {
|
|
if err := format(f); err != nil {
|
|
log.Fatalf("%s: %v", f, err)
|
|
}
|
|
}
|
|
}
|