diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go index 183f800a2..2fee1f78c 100644 --- a/cmd/multiproduct_kati/main.go +++ b/cmd/multiproduct_kati/main.go @@ -56,6 +56,7 @@ var onlySoong = flag.Bool("only-soong", false, "Only run product config and Soon var buildVariant = flag.String("variant", "eng", "build variant to use") var skipProducts = flag.String("skip-products", "", "comma-separated list of products to skip (known failures, etc)") +var includeProducts = flag.String("products", "", "comma-separated list of products to build") const errorLeadingLines = 20 const errorTrailingLines = 20 @@ -158,6 +159,15 @@ func (s *Status) Finished() int { return s.failed } +func inList(str string, list []string) bool { + for _, other := range list { + if str == other { + return true + } + } + return false +} + func main() { log := logger.New(os.Stderr) defer log.Cleanup() @@ -222,7 +232,24 @@ func main() { if err != nil { log.Fatal(err) } - productsList := strings.Fields(vars["all_named_products"]) + var productsList []string + allProducts := strings.Fields(vars["all_named_products"]) + + if *includeProducts != "" { + missingProducts := []string{} + for _, product := range strings.Split(*includeProducts, ",") { + if inList(product, allProducts) { + productsList = append(productsList, product) + } else { + missingProducts = append(missingProducts, product) + } + } + if len(missingProducts) > 0 { + log.Fatalf("Products don't exist: %s\n", missingProducts) + } + } else { + productsList = allProducts + } products := make([]string, 0, len(productsList)) skipList := strings.Split(*skipProducts, ",")