diff --git a/src/freedombone-addremove b/src/freedombone-addremove index 7da064b8..c07beb9c 100755 --- a/src/freedombone-addremove +++ b/src/freedombone-addremove @@ -172,7 +172,7 @@ if [ ! "$?" = "0" ]; then exit 2 fi -detect_apps +detect_installable_apps # if no applications were found if [[ ${#APPS_AVAILABLE[@]} == 0 ]]; then diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector index 91f8f919..1f11af87 100755 --- a/src/freedombone-utils-selector +++ b/src/freedombone-utils-selector @@ -40,6 +40,17 @@ APPS_CHOSEN=() # A list of the names of installed apps APPS_INSTALLED_NAMES=() +function app_variants { + filename=$1 + variants_line=$(cat ${filename} | grep "VARIANTS=") + if [[ "$variants_line" == *"'"* ]]; then + variants_list=$(echo "$variants_line" | awk -F '=' '{print $2}' | awk -F "'" '{print $2}') + else + variants_list=$(echo "$variants_line" | awk -F '=' '{print $2}' | awk -F '"' '{print $2}') + fi + echo "$variants_list" +} + function item_in_array { local e for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done @@ -98,6 +109,34 @@ function detect_apps { get_apps_installed_names } +function detect_installable_apps { + FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* + + APPS_AVAILABLE=() + APPS_CHOSEN=() + APPS_INSTALLED=() + APPS_INSTALLED_NAMES=() + + function_check app_is_installed + + # 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 + variants_list=$(app_variants $filename) + if [ ${#variants_list} -gt 0 ]; then + APPS_AVAILABLE+=("${app_name}") + APPS_CHOSEN+=("0") + APPS_INSTALLED+=("$(app_is_installed $app_name)") + if [[ $(app_is_installed $app_name) == "1" ]]; then + APPS_INSTALLED_NAMES+=("$app_name") + fi + fi + fi + done +} + # creates the APPS_AVAILABLE and APPS_CHOSEN arrays based on # the given variant name function choose_apps_for_variant { @@ -116,12 +155,7 @@ function choose_apps_for_variant { APPS_AVAILABLE+=("${app_name}") if grep -q "VARIANTS=" ${filename}; then - variants_line=$(cat ${filename} | grep "VARIANTS=") - if [[ "$variants_line" == *"'"* ]]; then - variants_list=$(echo "$variants_line" | awk -F '=' '{print $2}' | awk -F "'" '{print $2}') - else - variants_list=$(echo "$variants_line" | awk -F '=' '{print $2}' | awk -F '"' '{print $2}') - fi + variants_list=$(app_variants $filename) if [[ "${variants_list}" == 'all'* || \ "${variants_list}" == "$variant_name "* || \ "${variants_list}" == *" $variant_name "* || \