From ed0e6be64ebd77ea7e34244703175f42b27dfb50 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 28 Sep 2016 21:26:36 +0100 Subject: [PATCH] Selecting full installs --- src/freedombone-utils-selector | 195 +++++++++++++++++---------------- 1 file changed, 100 insertions(+), 95 deletions(-) diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector index 8cc98281..b2aaaa13 100755 --- a/src/freedombone-utils-selector +++ b/src/freedombone-utils-selector @@ -41,137 +41,142 @@ APPS_CHOSEN=() APPS_INSTALLED_NAMES=() function item_in_array { - local e - for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done - return 1 + local e + for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done + return 1 } function app_is_installed { - app_name="$1" - if [ ! -f $COMPLETION_FILE ]; then - echo "0" - return - fi + app_name="$1" + if [ ! -f $COMPLETION_FILE ]; then + echo "0" + return + fi - if ! grep -Fxq "install_${app_name}" $COMPLETION_FILE; then - echo "0" - else - echo "1" - fi + if ! grep -Fxq "install_${app_name}" $COMPLETION_FILE; then + echo "0" + else + echo "1" + fi } function get_apps_installed { - for a in "${APPS_AVAILABLE[@]}" - do - APPS_INSTALLED+=("$(app_is_installed $a)") - done + for a in "${APPS_AVAILABLE[@]}" + do + APPS_INSTALLED+=("$(app_is_installed $a)") + done } function get_apps_installed_names { - APPS_INSTALLED_NAMES=() - for a in "${APPS_AVAILABLE[@]}" - do - if [[ $(app_is_installed $a) == "1" ]]; then - APPS_INSTALLED_NAMES+=("$a") - fi - done + APPS_INSTALLED_NAMES=() + for a in "${APPS_AVAILABLE[@]}" + do + if [[ $(app_is_installed $a) == "1" ]]; then + APPS_INSTALLED_NAMES+=("$a") + fi + done } function detect_apps { - FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* + FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* - APPS_AVAILABLE=() - APPS_CHOSEN=() + APPS_AVAILABLE=() + APPS_CHOSEN=() - # for all the app scripts - for filename in $FILES - do - app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') - if [[ $(item_in_array ${app_name} ${APPS_AVAILABLE[@]}) != 0 ]]; then - APPS_AVAILABLE+=("${app_name}") - APPS_CHOSEN+=("0") - fi - done + # for all the app scripts + for filename in $FILES + do + app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') + if [[ $(item_in_array ${app_name} ${APPS_AVAILABLE[@]}) != 0 ]]; then + APPS_AVAILABLE+=("${app_name}") + APPS_CHOSEN+=("0") + fi + done - function_check get_apps_installed - get_apps_installed - get_apps_installed_names + function_check get_apps_installed + get_apps_installed + get_apps_installed_names } # creates the APPS_AVAILABLE and APPS_CHOSEN arrays based on # the given variant name function choose_apps_for_variant { - variant_name="$1" + variant_name="$1" - FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* + FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* - APPS_AVAILABLE=() - APPS_CHOSEN=() + APPS_AVAILABLE=() + APPS_CHOSEN=() - # for all the app scripts - for filename in $FILES - do - app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') - if [[ $(item_in_array ${app_name} ${APPS_AVAILABLE[@]}) != 0 ]]; then - APPS_AVAILABLE+=("${app_name}") + # for all the app scripts + for filename in $FILES + do + app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') + if [[ $(item_in_array ${app_name} ${APPS_AVAILABLE[@]}) != 0 ]]; then + APPS_AVAILABLE+=("${app_name}") - if grep -q "VARIANTS=" ${filename}; then - variants_list="$(cat ${filename} | grep "VARIANTS=" | awk -F '=' '{print $2}' | awk -F "'" '{print $2}')" - if [[ "${variants_list}" == 'all' || "${variants_list}" == "$variant_name "* || "${variants_list}" == *" $variant_name "* || "${variants_list}" == *" $variant_name" ]]; then - APPS_CHOSEN+=("1") - else - APPS_CHOSEN+=("0") - fi - else - APPS_CHOSEN+=("0") - fi + if grep -q "VARIANTS=" ${filename}; then + variants_list="$(cat ${filename} | grep "VARIANTS=" | awk -F '=' '{print $2}' | awk -F "'" '{print $2}')" + if [[ "${variants_list}" == 'all' || \ + "${variants_list}" == 'any' || \ + "${variants_list}" == 'full' || \ + "${variants_list}" == "$variant_name "* || \ + "${variants_list}" == *" $variant_name "* || \ + "${variants_list}" == *" $variant_name" ]]; then + APPS_CHOSEN+=("1") + else + APPS_CHOSEN+=("0") + fi + else + APPS_CHOSEN+=("0") + fi - fi - done + fi + done - function_check get_apps_installed - get_apps_installed + function_check get_apps_installed + get_apps_installed } function list_chosen_apps { - app_index=0 - for a in "${APPS_AVAILABLE[@]}" - do - if [[ ${APPS_CHOSEN[$app_index]} == "1" ]]; then - echo $"${a}" - fi - app_index=$[app_index+1] - done + app_index=0 + for a in "${APPS_AVAILABLE[@]}" + do + if [[ ${APPS_CHOSEN[$app_index]} == "1" ]]; then + echo $"${a}" + fi + app_index=$[app_index+1] + done } function remove_apps { - app_index=0 - for a in "${APPS_AVAILABLE[@]}" - do - if [[ ${APPS_INSTALLED[$app_index]} == "1" ]]; then - if [[ ${APPS_CHOSEN[$app_index]} == "0" ]]; then - echo $"Removing application: ${a}" - remove_${a} - echo $"${a} was removed" - fi - fi - app_index=$[app_index+1] - done + app_index=0 + for a in "${APPS_AVAILABLE[@]}" + do + if [[ ${APPS_INSTALLED[$app_index]} == "1" ]]; then + if [[ ${APPS_CHOSEN[$app_index]} == "0" ]]; then + echo $"Removing application: ${a}" + remove_${a} + echo $"${a} was removed" + fi + fi + app_index=$[app_index+1] + done } function install_apps { - app_index=0 - for a in "${APPS_AVAILABLE[@]}" - do - if [[ ${APPS_INSTALLED[$app_index]} == "0" ]]; then - if [[ ${APPS_CHOSEN[$app_index]} == "1" ]]; then - echo $"Installing application: ${a}" - install_${a} - echo $"${a} was installed" - fi - fi - app_index=$[app_index+1] - done + app_index=0 + for a in "${APPS_AVAILABLE[@]}" + do + if [[ ${APPS_INSTALLED[$app_index]} == "0" ]]; then + if [[ ${APPS_CHOSEN[$app_index]} == "1" ]]; then + echo $"Installing application: ${a}" + install_${a} + echo $"${a} was installed" + fi + fi + app_index=$[app_index+1] + done } # NOTE: deliberately no exit 0