Don't list apps when there's not enough ram to install them

This commit is contained in:
Bob Mottram 2018-05-09 17:38:17 +01:00
parent fcb209d3a9
commit fa49e53734
2 changed files with 67 additions and 39 deletions

View File

@ -30,6 +30,7 @@ VARIANTS="full full-vim writer"
IN_DEFAULT_INSTALL=0 IN_DEFAULT_INSTALL=0
SHOW_ON_ABOUT=1 SHOW_ON_ABOUT=1
MINIMUM_RAM_MB=2000
ETHERPAD_DOMAIN_NAME= ETHERPAD_DOMAIN_NAME=
ETHERPAD_CODE= ETHERPAD_CODE=

View File

@ -286,6 +286,25 @@ function app_not_on_onion_only {
echo "1" echo "1"
} }
function enough_ram_for_app {
app_name="$1"
if ! grep -q "MINIMUM_RAM_MB=" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}"; then
echo "0"
return
fi
minimum_ram_MB=$(grep "MINIMUM_RAM_MB=" "/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-${app_name}" | head -n 1 | awk -F '=' '{print $2}')
minimum_ram_bytes=$((minimum_ram_MB * 1024))
ram_available=$(grep MemTotal /proc/meminfo | awk '{print $2}')
if [ "$ram_available" -lt "$minimum_ram_bytes" ]; then
echo "1"
return
fi
echo "0"
}
# detects what apps are available # detects what apps are available
function detect_apps { function detect_apps {
FILES="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*" FILES="/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*"
@ -299,11 +318,13 @@ function detect_apps {
for filename in $FILES for filename in $FILES
do do
app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then if [[ $(enough_ram_for_app "$app_name") != "0" ]]; then
# shellcheck disable=SC2068 if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then
if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then # shellcheck disable=SC2068
APPS_AVAILABLE+=("${app_name}") if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then
APPS_CHOSEN+=("0") APPS_AVAILABLE+=("${app_name}")
APPS_CHOSEN+=("0")
fi
fi fi
fi fi
done done
@ -333,17 +354,19 @@ function detect_installable_apps {
do do
app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then if [[ $(enough_ram_for_app "$app_name") != "0" ]]; then
# shellcheck disable=SC2068 if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then
if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then # shellcheck disable=SC2068
variants_list=$(app_variants "$filename") if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then
# check for empty string variants_list=$(app_variants "$filename")
if [ ${#variants_list} -gt 0 ]; then # check for empty string
APPS_AVAILABLE+=("${app_name}") if [ ${#variants_list} -gt 0 ]; then
APPS_CHOSEN+=("0") APPS_AVAILABLE+=("${app_name}")
APPS_INSTALLED+=("$(app_is_installed "$app_name")") APPS_CHOSEN+=("0")
if [[ $(app_is_installed "$app_name") == "1" ]]; then APPS_INSTALLED+=("$(app_is_installed "$app_name")")
APPS_INSTALLED_NAMES+=("$app_name") if [[ $(app_is_installed "$app_name") == "1" ]]; then
APPS_INSTALLED_NAMES+=("$app_name")
fi
fi fi
fi fi
fi fi
@ -367,14 +390,16 @@ function detect_installed_apps {
do do
app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then if [[ $(enough_ram_for_app "$app_name") != "0" ]]; then
if [[ $(app_is_installed "$app_name") == "1" ]]; then if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then
# shellcheck disable=SC2068 if [[ $(app_is_installed "$app_name") == "1" ]]; then
if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then # shellcheck disable=SC2068
variants_list=$(app_variants "$filename") if ! item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then
if [ ${#variants_list} -gt 0 ]; then variants_list=$(app_variants "$filename")
APPS_AVAILABLE+=("${app_name}") if [ ${#variants_list} -gt 0 ]; then
APPS_INSTALLED_NAMES+=("$app_name") APPS_AVAILABLE+=("${app_name}")
APPS_INSTALLED_NAMES+=("$app_name")
fi
fi fi
fi fi
fi fi
@ -404,27 +429,29 @@ function choose_apps_for_variant {
for filename in $FILES for filename in $FILES
do do
app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}') app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then if [[ $(enough_ram_for_app "$app_name") != "0" ]]; then
# shellcheck disable=SC2068 if [[ $(app_not_on_onion_only "$app_name") != "0" ]]; then
if item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then # shellcheck disable=SC2068
if grep -q "VARIANTS=" "${filename}"; then if item_in_array "${app_name}" ${APPS_AVAILABLE[@]}; then
variants_list=$(app_variants "$filename") if grep -q "VARIANTS=" "${filename}"; then
if [[ "${variants_list}" == 'all'* || \ variants_list=$(app_variants "$filename")
"${variants_list}" == "$variant_name" || \ if [[ "${variants_list}" == 'all'* || \
"${variants_list}" == "$variant_name "* || \ "${variants_list}" == "$variant_name" || \
"${variants_list}" == *" $variant_name "* || \ "${variants_list}" == "$variant_name "* || \
"${variants_list}" == *" $variant_name" ]]; then "${variants_list}" == *" $variant_name "* || \
if [[ $(app_is_removed "${a}") == "0" ]]; then "${variants_list}" == *" $variant_name" ]]; then
#echo $"${app_name} chosen" if [[ $(app_is_removed "${a}") == "0" ]]; then
APPS_CHOSEN+=("1") #echo $"${app_name} chosen"
APPS_CHOSEN+=("1")
else
APPS_CHOSEN+=("0")
fi
else else
APPS_CHOSEN+=("0") APPS_CHOSEN+=("0")
fi fi
else else
APPS_CHOSEN+=("0") APPS_CHOSEN+=("0")
fi fi
else
APPS_CHOSEN+=("0")
fi fi
fi fi
fi fi