Show only installable apps

Apps with an empty variants string are considered too experimental to be installable
This commit is contained in:
Bob Mottram 2016-09-30 10:02:51 +01:00
parent 28d5909c71
commit 38644d0302
2 changed files with 41 additions and 7 deletions

View File

@ -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

View File

@ -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 "* || \