1*9e94795aSAndroid Build Coastguard Worker#!/bin/bash 2*9e94795aSAndroid Build Coastguard Worker 3*9e94795aSAndroid Build Coastguard Worker# TODO: Currently only checks trunk_staging. Should check trunk_staging first, 4*9e94795aSAndroid Build Coastguard Worker# then use the product-specfic releases. Only applies to -c though. 5*9e94795aSAndroid Build Coastguard Worker 6*9e94795aSAndroid Build Coastguard Workerfunction Help() { 7*9e94795aSAndroid Build Coastguard Workercat <<@EOF@ 8*9e94795aSAndroid Build Coastguard WorkerUsage: lunchable [options] 9*9e94795aSAndroid Build Coastguard Worker 10*9e94795aSAndroid Build Coastguard WorkerLists products that have no functioning lunch combo. 11*9e94795aSAndroid Build Coastguard Worker 12*9e94795aSAndroid Build Coastguard Workeroptions: 13*9e94795aSAndroid Build Coastguard Worker-c prints all failing lunch combos for all targets; 14*9e94795aSAndroid Build Coastguard Worker-w why? Prints the error message after each failed lunch combo. Only 15*9e94795aSAndroid Build Coastguard Worker works with -c 16*9e94795aSAndroid Build Coastguard Worker 17*9e94795aSAndroid Build Coastguard Worker@EOF@ 18*9e94795aSAndroid Build Coastguard Worker} 19*9e94795aSAndroid Build Coastguard Worker 20*9e94795aSAndroid Build Coastguard Workercomplete=0 21*9e94795aSAndroid Build Coastguard Workerwhy=0 22*9e94795aSAndroid Build Coastguard Workerwhile getopts "cwh" option; do 23*9e94795aSAndroid Build Coastguard Worker case $option in 24*9e94795aSAndroid Build Coastguard Worker c) 25*9e94795aSAndroid Build Coastguard Worker complete=1;; 26*9e94795aSAndroid Build Coastguard Worker w) 27*9e94795aSAndroid Build Coastguard Worker why=1;; 28*9e94795aSAndroid Build Coastguard Worker h) 29*9e94795aSAndroid Build Coastguard Worker Help 30*9e94795aSAndroid Build Coastguard Worker exit;; 31*9e94795aSAndroid Build Coastguard Worker esac 32*9e94795aSAndroid Build Coastguard Workerdone 33*9e94795aSAndroid Build Coastguard Worker 34*9e94795aSAndroid Build Coastguard Worker# Getting all named products can fail if we haven't lunched anything 35*9e94795aSAndroid Build Coastguard Workersource $(pwd)/build/envsetup.sh &> /dev/null 36*9e94795aSAndroid Build Coastguard Workerall_named_products=( $(get_build_var all_named_products 2> /dev/null) ) 37*9e94795aSAndroid Build Coastguard Workerif [[ $? -ne 0 ]]; then 38*9e94795aSAndroid Build Coastguard Worker echo "get_build_var all_named_products failed. Lunch something first?" >&2 39*9e94795aSAndroid Build Coastguard Worker exit 1 40*9e94795aSAndroid Build Coastguard Workerfi 41*9e94795aSAndroid Build Coastguard Workertotal_products=${#all_named_products[@]} 42*9e94795aSAndroid Build Coastguard Workercurrent_product=0 43*9e94795aSAndroid Build Coastguard Worker 44*9e94795aSAndroid Build Coastguard Workerfor product in "${all_named_products[@]}"; do 45*9e94795aSAndroid Build Coastguard Worker (( current_product += 1 )) 46*9e94795aSAndroid Build Coastguard Worker single_pass=0 47*9e94795aSAndroid Build Coastguard Worker printf " Checking ${current_product}/${total_products} \r" >&2 48*9e94795aSAndroid Build Coastguard Worker for release in trunk_staging; do 49*9e94795aSAndroid Build Coastguard Worker for variant in eng user userdebug; do 50*9e94795aSAndroid Build Coastguard Worker lunchcombo="${product}-${release}-${variant}" 51*9e94795aSAndroid Build Coastguard Worker lunch_error="$(lunch $lunchcombo 2>&1 > /dev/null)" 52*9e94795aSAndroid Build Coastguard Worker if [[ $? -ne 0 ]]; then 53*9e94795aSAndroid Build Coastguard Worker # Lunch failed 54*9e94795aSAndroid Build Coastguard Worker if [[ $complete -eq 1 ]]; then 55*9e94795aSAndroid Build Coastguard Worker echo -e "${product} : ${lunchcombo}" 56*9e94795aSAndroid Build Coastguard Worker if [[ $why -eq 1 ]]; then 57*9e94795aSAndroid Build Coastguard Worker echo -e "$(sed 's/^/ /g' <<<$lunch_error)" 58*9e94795aSAndroid Build Coastguard Worker fi 59*9e94795aSAndroid Build Coastguard Worker fi 60*9e94795aSAndroid Build Coastguard Worker elif [[ $complete -ne 1 ]]; then 61*9e94795aSAndroid Build Coastguard Worker single_pass=1 62*9e94795aSAndroid Build Coastguard Worker break # skip variant 63*9e94795aSAndroid Build Coastguard Worker fi 64*9e94795aSAndroid Build Coastguard Worker done 65*9e94795aSAndroid Build Coastguard Worker if [[ $single_pass -eq 1 ]]; then 66*9e94795aSAndroid Build Coastguard Worker break # skip release 67*9e94795aSAndroid Build Coastguard Worker fi 68*9e94795aSAndroid Build Coastguard Worker done 69*9e94795aSAndroid Build Coastguard Worker if [[ $complete -eq 0 ]] && [[ $single_pass -eq 0 ]]; then 70*9e94795aSAndroid Build Coastguard Worker echo "${product}" 71*9e94795aSAndroid Build Coastguard Worker fi 72*9e94795aSAndroid Build Coastguard Workerdone 73