Files
2020-03-05 21:17:07 +08:00

99 lines
2.5 KiB
Bash

#!/bin/sh
#copyright by monlor
# source /etc/mixbox/bin/base
export PATH=$PATH:/etc/mixbox/bin
mbroot="/etc/mixbox"
mbtmp="/tmp/mbtmp"
mburl=$(mbdb get mixbox.main.url)
model=$(mbdb get mixbox.main.model)
source ${mbroot}/scripts/helper.sh
fix_local_applist() {
rm -rf ${mbroot}/config/applist.txt
if [ ! -f ${mbtmp}/applist.txt ]; then
echo "未找到在线插件列表,无法修复!"
return 1
else
get_applist all -a | while read line
do
name="$(get_applist ${line} -n)"
checkuci $name && echo ${line} >> ${mbroot}/config/applist.txt
done
fi
if [ ! -f ${mbroot}/config/applist.txt ]; then
echo "修复失败!"
return 1
else
return 0
fi
}
get_applist() {
if [ "$1" = "installed" ]; then
[ ! -f ${mbroot}/config/applist.txt ] && fix_local_applist
applist_txt="${mbroot}/config/applist.txt"
else
applist_txt="${mbtmp}/applist.txt"
fi
appname="$1" # all: all app, installed, installed app
arg="$2" # -n:appname, -i:appinfo, -e:newinfo, -v:version, -s:service
[ "$appname" = "all" -o "$appname" = "installed" ] && appname=".*"
case "$arg" in
"-n")
cat $applist_txt 2> /dev/null | grep -v mixbox | grep "^${appname}|" | cut -d'|' -f1 | sort -u
;;
"-i")
cat $applist_txt 2> /dev/null | grep "^${appname}|" | cut -d'|' -f2
;;
"-e")
cat $applist_txt 2> /dev/null | grep "^${appname}|" | cut -d'|' -f3
;;
"-v")
cat $applist_txt 2> /dev/null | grep "^${appname}|" | cut -d'|' -f4
;;
"-s")
cat $applist_txt 2> /dev/null | grep "^${appname}|" | cut -d'|' -f5
;;
"-a")
cat $applist_txt 2> /dev/null | grep -v mixbox | grep "^${appname}|"
;;
*)
cat $applist_txt 2> /dev/null | sort -u
;;
esac
}
update_applist() {
wgetsh ${mbtmp}/applist_tmp.txt $mburl/applist.txt
if [ $? -eq 0 ]; then
rm -rf ${mbtmp}/applist.txt
cat ${mbtmp}/applist_tmp.txt | grep "${model}" | sort -u | while read line; do
local install_text=""
local update_text=""
local appname=""
local version=""
appname="$(echo -n "$line" | cut -d'|' -f1)"
version="$(echo -n "$line" | cut -d '|' -f4)"
if ls ${mbroot}/apps/${appname} &> /dev/null; then
[ "$(mbdb get ${appname}.main.version)" != "${version}" ] && update_text="有更新"
else
install_text="未安装"
fi
echo "${line}|${install_text}|${update_text}" >> ${mbtmp}/applist.txt
done
fi
rm -rf ${mbtmp}/applist_tmp.txt
}
# force udpate
[ "$1" = "update" ] && update_applist && exit
[ ! -f ${mbtmp}/applist.txt ] && update_applist
get_applist $@
exit 0