blob: 645ef2d1987527beac7db8c9d4db5e6a9fa9c88c [file] [log] [blame]
Jingwen Chen164e0862021-02-19 00:48:40 -05001package bp2build
2
3import (
4 "android/soong/android"
5 "fmt"
Liz Kammer6eff3232021-08-26 08:37:59 -04006 "strings"
Jingwen Chen164e0862021-02-19 00:48:40 -05007)
8
9// Simple metrics struct to collect information about a Blueprint to BUILD
10// conversion process.
11type CodegenMetrics struct {
12 // Total number of Soong/Blueprint modules
13 TotalModuleCount int
14
15 // Counts of generated Bazel targets per Bazel rule class
16 RuleClassCount map[string]int
Liz Kammerba3ea162021-02-17 13:22:03 -050017
18 // Total number of handcrafted targets
19 handCraftedTargetCount int
Liz Kammer6eff3232021-08-26 08:37:59 -040020
21 moduleWithUnconvertedDepsMsgs []string
Jingwen Chen164e0862021-02-19 00:48:40 -050022}
23
24// Print the codegen metrics to stdout.
25func (metrics CodegenMetrics) Print() {
26 generatedTargetCount := 0
27 for _, ruleClass := range android.SortedStringKeys(metrics.RuleClassCount) {
28 count := metrics.RuleClassCount[ruleClass]
29 fmt.Printf("[bp2build] %s: %d targets\n", ruleClass, count)
30 generatedTargetCount += count
31 }
32 fmt.Printf(
Liz Kammer6eff3232021-08-26 08:37:59 -040033 "[bp2build] Generated %d total BUILD targets and included %d handcrafted BUILD targets from %d Android.bp modules.\n With %d modules with unconverted deps \n\t%s",
Jingwen Chen164e0862021-02-19 00:48:40 -050034 generatedTargetCount,
Liz Kammerba3ea162021-02-17 13:22:03 -050035 metrics.handCraftedTargetCount,
Liz Kammer6eff3232021-08-26 08:37:59 -040036 metrics.TotalModuleCount,
37 len(metrics.moduleWithUnconvertedDepsMsgs),
38 strings.Join(metrics.moduleWithUnconvertedDepsMsgs, "\n\t"))
Jingwen Chen164e0862021-02-19 00:48:40 -050039}