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