massive speed increases to preload script

pull/559/head
Botspot 3 years ago
parent 4f9c1f5fd0
commit a10836e523

@ -88,61 +88,14 @@ if [ ! -f "$listfile" ] || [ -z "$(cat "$listfile")" ];then
reloadlist=1
fi
#this ensures that all apps & categories stay preloaded.
(sleep 5;"${DIRECTORY}/etc/preload-daemon" "$format") 1>&2 &>/dev/null &
if [ $reloadlist == 1 ];then
echo "Generating list..." 1>&2
APPS="$(ls "${DIRECTORY}/apps")"
structure="$(cat "${DIRECTORY}/data/categories/structure")"
source /home/pi/pi-apps/api
vfiles="$(app_categories)"
#generate a virtual file system with apps in folders represented as subdirectories
vfiles=''
PREIFS="$IFS"
IFS=$'\n'
for app in $APPS
do
line="$(echo "$structure" | grep "$app"'|' | awk -F'|' '{print $2 "/" $1}')"
if [ -z "$line" ];then
echo "WARNING: $app app not found in $(echo "${DIRECTORY}/data/categories/structure" | sed 's+/home/pi+~+g') file." 1>&2
if [ -z "$onlinestructurefile" ];then
onlinestructurefile="$(wget -qO- 'https://raw.githubusercontent.com/Botspot/pi-apps/master/data/categories/structure')"
fi
onlinematch="$(echo "$onlinestructurefile" | grep "$app"'|')"
if [ ! -z "$onlinematch" ];then
echo -e "Located the default category for the $app app from github.\nIt is: ${onlinematch}EOO" 1>&2
echo "$onlinematch" >> "${DIRECTORY}/data/categories/structure"
else
echo -e "Could not find the default category for the $app app." 1>&2
echo "${app}|" >> "${DIRECTORY}/data/categories/structure"
fi
#refresh structure file
structure="$(cat "${DIRECTORY}/data/categories/structure")"
line="$(echo "$structure" | grep "$app"'|' | awk -F'|' '{print $2 "/" $1}')"
fi
vfiles="$vfiles
$line"
done
IFS="$PREIFS"
#create special directory containing installed apps
PREIFS="$IFS"
IFS=$'\n'
for app in $APPS
do
line="$(echo "$structure" | grep "$app"'|' | awk -F'|' '{print $2 "/" $1}')"
if [ -f "${DIRECTORY}/data/status/$app" ] && [ "$(cat "${DIRECTORY}/data/status/$app")" == 'installed' ];then
#if installed, add to list
vfiles="$vfiles
Installed/$app"
fi
done
IFS="$PREIFS"
vfiles="$(echo "$vfiles" | grep . | sed 's+^/++g' | sort | uniq)"
#echo "$vfiles" 1>&2
@ -197,10 +150,10 @@ Installed/$app"
LIST=''
for i in $DIRS
do
if [ "$i" == 'Installed' ];then
diricon="${DIRECTORY}/icons/folder-installed.png"
if [ -f "${DIRECTORY}/icons/categories/${i}.png" ];then
diricon="${DIRECTORY}/icons/categories/${i}.png"
else
diricon="${DIRECTORY}/icons/folder.png"
diricon="${DIRECTORY}/icons/categories/default.png"
fi
LIST="${LIST}$diricon
@ -230,10 +183,10 @@ $i
LIST=''
for i in $DIRS
do
if [ "$i" == 'Installed' ];then
diricon="${DIRECTORY}/icons/folder-installed-64.png"
if [ -f "${DIRECTORY}/icons/categories/${i}-64.png" ];then
diricon="${DIRECTORY}/icons/categories/${i}-64.png"
else
diricon="${DIRECTORY}/icons/folder-64.png"
diricon="${DIRECTORY}/icons/categories/default-64.png"
fi
LIST="$LIST
@ -271,3 +224,6 @@ done
IFS="$PREIFS" ) &
echo "$LIST"
#re-preload all categories in background
"${DIRECTORY}/etc/preload-daemon" "$format" &>/dev/null &

Loading…
Cancel
Save