#!/bin/bash # TODO: Currently only checks trunk_staging. Should check trunk_staging first, # then use the product-specfic releases. Only applies to -c though. function Help() { cat <<@EOF@ Usage: lunchable [options] Lists products that have no functioning lunch combo. options: -c prints all failing lunch combos for all targets; -w why? Prints the error message after each failed lunch combo. Only works with -c @EOF@ } complete=0 why=0 while getopts "cwh" option; do case $option in c) complete=1;; w) why=1;; h) Help exit;; esac done # Getting all named products can fail if we haven't lunched anything source $(pwd)/build/envsetup.sh &> /dev/null all_named_products=( $(get_build_var all_named_products 2> /dev/null) ) if [[ $? -ne 0 ]]; then echo "get_build_var all_named_products failed. Lunch something first?" >&2 exit 1 fi total_products=${#all_named_products[@]} current_product=0 for product in "${all_named_products[@]}"; do (( current_product += 1 )) single_pass=0 printf " Checking ${current_product}/${total_products} \r" >&2 for release in trunk_staging; do for variant in eng user userdebug; do lunchcombo="${product}-${release}-${variant}" lunch_error="$(lunch $lunchcombo 2>&1 > /dev/null)" if [[ $? -ne 0 ]]; then # Lunch failed if [[ $complete -eq 1 ]]; then echo -e "${product} : ${lunchcombo}" if [[ $why -eq 1 ]]; then echo -e "$(sed 's/^/ /g' <<<$lunch_error)" fi fi elif [[ $complete -ne 1 ]]; then single_pass=1 break # skip variant fi done if [[ $single_pass -eq 1 ]]; then break # skip release fi done if [[ $complete -eq 0 ]] && [[ $single_pass -eq 0 ]]; then echo "${product}" fi done