73 lines
1.8 KiB
Text
73 lines
1.8 KiB
Text
|
#!/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
|