Files
MIXBOX-ARCHIVE/apps/mixbox/scripts/appmanage.sh
2020-03-05 00:08:40 +08:00

133 lines
4.3 KiB
Bash

#!/bin/sh
#copyright by monlor
source /etc/mixbox/bin/base
appname="$2"
[ -z "${appname}" ] && logsh "【Tools】" "请输入插件名!" && exit 1
get_app_byurl () {
logsh "【Tools】" "下载插件安装文件..."
wgetsh "${mbtmp}/${appname}.tar.gz" "$mburl/appstore/${appname}_${model}.tar.gz"
if [ $? -eq 1 ]; then
logsh "【Tools】" "文件下载失败!"
exit
fi
logsh "【Tools】" "解压安装文件..."
tar -zxvf ${mbtmp}/${appname}.tar.gz -C ${mbtmp} > /dev/null 2>&1
if [ $? -ne 0 ]; then
logsh "【Tools】" "文件解压失败!"
exit
fi
logsh "【Tools】" "赋予可执行文件..."
chmod +x -R ${mbtmp}/${appname}/
}
install () {
logsh "【Tools】" "开始安装【${appname}】插件..."
get_app_byurl
# if [ "$model" = "armv7l" ]; then
# rm -rf ${mbtmp}/${appname}/bin/*_mips
# else
# rm -rf ${mbtmp}/${appname}/bin/*_armv7l
# fi
# ls ${mbtmp}/${appname}/bin/ 2> /dev/null | while read line; do
# [ -d ${mbtmp}/${appname}/bin/${line} ] && continue
# mv ${mbtmp}/${appname}/bin/${line} ${mbtmp}/${appname}/bin/"$(echo ${line} | sed -e 's/_.*//g')"
# done
# 开始判断
. ${mbtmp}/${appname}/config/${appname}.uci
if [ -n "$(echo $supports | grep "$model")" ]; then
logsh "【Tools】" "处理器架构符合安装要求"
else
logsh "【Tools】" "设备架构:$model,插件支持:$supports,无法安装!"
rm -rf ${mbtmp}/${appname}
rm -rf ${mbtmp}/${appname}.tar.gz
exit 1
fi
logsh "【Tools】" "检查工具箱版本..."
if [ "$(versioncmp $needver $mbver)" = '-1' ]; then
logsh "【Tools】" "工具箱版本过低!【${appname}】要求工具箱版本:$needver"
logsh "【Tools】" "插件【${appname}】安装失败!清理文件..."
rm -rf ${mbtmp}/${appname}
rm -rf ${mbtmp}/${appname}.tar.gz
exit 1
else
logsh "【Tools】" "工具箱版本[$mbver]满足安装要求"
fi
logsh "【Tools】" "检查插件的额外安装脚本..."
if [ -f ${mbtmp}/${appname}/scripts/install.sh ]; then
logsh "【Tools】" "运行插件安装脚本"
${mbtmp}/${appname}/scripts/install.sh
rm -rf ${mbtmp}/${appname}/scripts/install.sh
fi
logsh "【Tools】" "初始化uci配置信息..."
echo >> ${mbtmp}/${appname}/config/${appname}.uci # 防止最后一行读取不到
cat ${mbtmp}/${appname}/config/${appname}.uci | while read line; do
[ -z "$line" ] && continue
local ucikey="$(echo $line | cut -d'=' -f1)"
local ucivalue="$(echo $line | cut -d'=' -f2 | sed -e 's/\"//g')"
mbdb set $appname.main."$ucikey"="$ucivalue"
done
[ "$app_enabled" = '1' ] && mbdb set ${appname}.main.enable='1'
logsh "【Tools】" "添加插件到工具箱..."
sed -i "/^${appname}/d" ${mbroot}/config/applist.txt
echo "${appname}|${appinfo}" >> ${mbroot}/config/applist.txt
mkdir -p ${mbroot}/apps/${appname}
cp -rf ${mbtmp}/${appname}/ ${mbroot}/apps/
#清除临时文件
rm -rf ${mbtmp}/${appname}
rm -rf ${mbtmp}/${appname}.tar.gz
logsh "【Tools】" "插件安装完成!"
if [ -n "${newinfo}" ]; then
echo -e "-----------------------------------------"
echo -e "${newinfo}"
echo -e "-----------------------------------------"
fi
}
upgrade() {
logsh "【Tools】" "开始更新【${appname}】插件..."
!(checkuci ${appname}) && logsh "【Tools】" "插件【${appname}】未安装!" && exit 1
logsh "【Tools】" "先停止【${appname}】插件..."
app_enabled="$(mbdb get ${appname}.main.enable)"
mbdb set ${appname}.main.enable=0
${mbroot}/apps/${appname}/scripts/${appname}.sh stop
install ${appname}
}
uninstall() {
logsh "【Tools】" "开始卸载【${appname}】插件..."
!(checkuci ${appname}) && logsh "【Tools】" "插件【${appname}】未安装!" && exit 1
logsh "【Tools】" "先停止【${appname}】插件..."
${mbroot}/apps/${appname}/scripts/${appname}.sh stop &> /dev/null
#删除插件的配置
logsh "【Tools】" "清除插件uci配置信息"
mbdb clear ${appname}.*
# 清除插件列表中的插件信息
logsh "【Tools】" "从插件列表中移除..."
sed -i "/^${appname}/d" ${mbroot}/config/applist.txt
# 删除插件文件
logsh "【Tools】" "清除所有插件文件"
rm -rf ${mbroot}/apps/${appname} > /dev/null 2>&1
logsh "【Tools】" "插件【${appname}】卸载完成"
}
case "$1" in
install) install;;
upgrade) upgrade ;;
uninstall) uninstall ;;
*) echo "Usage: $0 {add|upgrade|del} appname"
esac