Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29252f80 authored by Fabián Cañas's avatar Fabián Cañas
Browse files

Add tool to determine if products can be lunched

This could aid in cleaning unmaintained products from manifests.

Change-Id: Ic1ae4d62711cf27f17c1e4c770f64db074768fd5
Test: lunchable
parent 5deb660e
Loading
Loading
Loading
Loading

tools/lunchable

0 → 100755
+72 −0
Original line number Diff line number Diff line
#!/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