multiproduct_kati: Support skipping known-broken products

This can make it easier to add build/soong/build_test.sh to continuous
build branches to catch new breaks, but where some products are known to
be broken.

Test: build/soong/build_test.bash --skip-products aosp_arm,aosp_arm64
Change-Id: Ib240570b68957077047ca75b78658429cb8c6a49
diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go
index e771c15..296000b 100644
--- a/cmd/multiproduct_kati/main.go
+++ b/cmd/multiproduct_kati/main.go
@@ -55,6 +55,8 @@
 
 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)")
+
 const errorLeadingLines = 20
 const errorTrailingLines = 20
 
@@ -225,8 +227,27 @@
 	if err != nil {
 		log.Fatal(err)
 	}
-	products := strings.Fields(vars["all_named_products"])
-	log.Verbose("Got product list:", products)
+	productsList := strings.Fields(vars["all_named_products"])
+
+	products := make([]string, 0, len(productsList))
+	skipList := strings.Split(*skipProducts, ",")
+	skipProduct := func(p string) bool {
+		for _, s := range skipList {
+			if p == s {
+				return true
+			}
+		}
+		return false
+	}
+	for _, product := range productsList {
+		if !skipProduct(product) {
+			products = append(products, product)
+		} else {
+			log.Verbose("Skipping: ", product)
+		}
+	}
+
+	log.Verbose("Got product list: ", products)
 
 	status.SetTotal(len(products))