mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-13 20:32:05 +08:00
109 lines
2.8 KiB
Bash
Executable File
109 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
log.warn() { echo -e "[\e[33mWARN\e[0m]: \e[1m$*\e[0m"; }
|
|
log.error() { echo -e "[\e[31mERROR\e[0m]: \e[1m$*\e[0m"; }
|
|
log.info() { echo -e "[\e[96mINFO\e[0m]: \e[1m$*\e[0m"; }
|
|
log.debug() { echo -e "[\e[32mDEBUG\e[0m]: \e[1m$*\e[0m"; }
|
|
|
|
|
|
function scan_desktop_file_log(){
|
|
unset desktop_file_path
|
|
package_name=$1
|
|
for desktop_file_path in $(dpkg -L "$1" |grep /usr/share/applications/ | awk '/\.desktop$/ {print}'); do
|
|
if [ "$(cat $desktop_file_path | grep NoDisplay=true)" = "" ];then
|
|
log.info "$desktop_file_path is found."
|
|
fi
|
|
done
|
|
for desktop_file_path in $(dpkg -L "$1" |grep /opt/apps/$package_name/entries/applications/ | awk '/\.desktop$/ {print}'); do
|
|
if [ "$(cat $desktop_file_path | grep NoDisplay=true)" = "" ];then
|
|
log.info "$desktop_file_path is found."
|
|
fi
|
|
done
|
|
|
|
|
|
}
|
|
|
|
function scan_desktop_file(){
|
|
unset desktop_file_path
|
|
local result=""
|
|
for desktop_file_path in $(dpkg -L "$1" | grep /usr/share/applications/ | awk '/\.desktop$/ {print}'); do
|
|
if [ "$(grep NoDisplay=true $desktop_file_path)" = "" ]; then
|
|
result+="$desktop_file_path,"
|
|
fi
|
|
done
|
|
for desktop_file_path in $(dpkg -L "$1" | grep /opt/apps/$package_name/entries/applications | awk '/\.desktop$/ {print}'); do
|
|
if [ "$(grep NoDisplay=true $desktop_file_path)" = "" ]; then
|
|
result+="$desktop_file_path,"
|
|
fi
|
|
done
|
|
# 去掉最后一个逗号
|
|
if [ -n "$result" ]; then
|
|
result=${result%,}
|
|
fi
|
|
echo "$result"
|
|
}
|
|
|
|
function launch_app(){
|
|
|
|
# 检查是否传入了路径参数
|
|
if [ -z "$1" ]; then
|
|
log.error "请传入文件路径作为参数"
|
|
exit 1
|
|
fi
|
|
|
|
DESKTOP_FILE_PATH=$1
|
|
|
|
if [[ $DESKTOP_FILE_PATH == file://* ]]; then
|
|
# 如果是,移除 'file://' 部分并输出结果
|
|
DESKTOP_FILE_PATH="${DESKTOP_FILE_PATH#file://}"
|
|
fi
|
|
|
|
# 获取文件内容中第一个 Exec= 后的命令
|
|
exec_command=$(grep -m 1 -oP "(?<=Exec=).*" "$DESKTOP_FILE_PATH")
|
|
|
|
# 删除 exec_command 中最后的 % 及其后面的内容
|
|
exec_command="${exec_command%\%*}"
|
|
|
|
# 打印提取的命令
|
|
log.info "Command is $exec_command"
|
|
|
|
# 在默认终端执行命令
|
|
eval "$exec_command"
|
|
}
|
|
|
|
if [ "$#" -lt 2 ];then
|
|
log.info "Usage: $0 check/launch/list/start packagename/desktop-file"
|
|
exit -1
|
|
fi
|
|
|
|
|
|
if [ "$1" = "check" ];then
|
|
|
|
scan_desktop_file_log "$2"
|
|
if [ "$desktop_file_path" = "" ];then
|
|
log.error "No desktop file found. exit -1"
|
|
exit -1
|
|
else
|
|
exit 0
|
|
fi
|
|
|
|
elif [ "$1" = "list" ];then
|
|
scan_desktop_file "$2"
|
|
if [ "$desktop_file_path" = "" ];then
|
|
exit -1
|
|
else
|
|
exit 0
|
|
fi
|
|
elif [ "$1" = "launch" ];then
|
|
scan_desktop_file_log "$2"
|
|
if [ "$desktop_file_path" = "" ];then
|
|
log.error "No desktop file found. exit -1"
|
|
exit -1
|
|
fi
|
|
|
|
|
|
launch_app "${desktop_file_path}"
|
|
|
|
elif [ "$1" = "start" ];then
|
|
launch_app "${desktop_file_path}"
|
|
fi
|