1package main 2 3/* 4 Canoninja reads a Ninja file and changes the rule names to be the digest of the rule contents. 5 Feed it to a filter that extracts only build statements, sort them, and you will have a crude 6 but effective tool to find small differences between two Ninja files. 7*/ 8 9import ( 10 "canoninja" 11 "flag" 12 "fmt" 13 "os" 14) 15 16func main() { 17 flag.Parse() 18 files := flag.Args() 19 if len(files) == 0 { 20 files = []string{"/dev/stdin"} 21 } 22 rc := 0 23 for _, f := range files { 24 if buffer, err := os.ReadFile(f); err == nil { 25 err = canoninja.Generate(f, buffer, os.Stdout) 26 if err != nil { 27 fmt.Fprintln(os.Stderr, err) 28 rc = 1 29 } 30 } else { 31 fmt.Fprintf(os.Stderr, "%s: %s\n", f, err) 32 rc = 1 33 } 34 } 35 os.Exit(rc) 36} 37