mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-18 05:04:51 +08:00
118 lines
3.2 KiB
Bash
Executable File
118 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
_red="\e[33m"
|
||
_green="\e[32m"
|
||
_reset="\e[0m"
|
||
|
||
unix_s=$(uname -s)
|
||
|
||
unix_release=$(
|
||
marked_release=""
|
||
if [ "$unix_s" = "Linux" ]; then
|
||
echo $HOME | grep com.termux >/dev/null
|
||
if [ $? == 0 ]; then
|
||
marked_release="termux"
|
||
elif [ -f "/etc/redhat-release" ]; then
|
||
if [ "$(cat /etc/redhat-release | awk '{print $1}' | grep -v '^$')" = "CentOS" ]; then
|
||
marked_release="CentOS"
|
||
else
|
||
marked_release="unknown"
|
||
fi
|
||
elif [ -f "/etc/os-release" ]; then
|
||
cat /etc/os-release | grep Alpine > /dev/null
|
||
if [ $? == 0 ]; then
|
||
marked_release="Alpine"
|
||
fi
|
||
fi
|
||
if [ "$marked_release" = "" ]; then
|
||
if [ -f "/etc/issue" ]; then
|
||
marked_release=$(cat /etc/issue | grep -v '^$' | awk '{print $1}')
|
||
else
|
||
marked_release="unknown"
|
||
fi
|
||
fi
|
||
elif [ "$unix_s" = "Darwin" ]; then
|
||
marked_release=$(sw_vers | grep ProductName | awk '{print $2" "$3" "$4}')
|
||
fi
|
||
echo $marked_release
|
||
)
|
||
unix_release=$(echo $unix_release | xargs)
|
||
|
||
function echo_error() {
|
||
echo -e "${_red}$1${_reset}"
|
||
}
|
||
|
||
function echo_info() {
|
||
echo -e "${_green}$1${_reset}"
|
||
}
|
||
|
||
function install_test() {
|
||
which fswatch >/dev/null
|
||
if [ $? != 0 ]; then
|
||
operate_confirm "fswatch还没有安装,是否确认安装?" && install_fswatch
|
||
fi
|
||
}
|
||
function install_fswatch() {
|
||
if [ "$unix_s" = "Linux" ]; then
|
||
case $unix_release in
|
||
"Kali" | "Ubuntu" | "Debian" | "Raspbian" | 'Pop!_OS')
|
||
sudo apt-get install fswatch -y ;;
|
||
#"termux") pkg install $1 -y ;;
|
||
"CentOS")
|
||
curl -o fswatch.tgz https://download.fastgit.org/emcrisostomo/fswatch/releases/download/1.16.0/fswatch-1.16.0.tar.gz && \
|
||
tar -xzf fswatch.tgz && \
|
||
cd fswatch-1.16.0 && \
|
||
./configure && \
|
||
make && \
|
||
sudo make install && \
|
||
cd .. && \
|
||
rm -rf fswatch.tgz fswatch-1.16.0
|
||
;;
|
||
#"Alpine") apk add $1 ;;
|
||
*)
|
||
echo_error "不支持的 Linux 发行版:$unix_release"
|
||
exit 1
|
||
;;
|
||
esac
|
||
elif [ "$unix_s" = "Darwin" ]; then
|
||
brew install fswatch
|
||
else
|
||
echo_error "不支持的操作系统:$unix_s"
|
||
exit 1
|
||
fi
|
||
}
|
||
function operate_confirm() {
|
||
echo -n $(echo_info "$1 [Y/n] ")
|
||
read operate
|
||
operate=$(echo $operate | tr A-Z a-z)
|
||
if [[ "$operate" = "y" || "$operate" = "" ]]; then
|
||
return 0
|
||
else
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
echo_info "当前系统:$unix_release"
|
||
install_test
|
||
if [ $? -ne 0 ]; then
|
||
exit 1
|
||
else
|
||
echo_info "程序路径:$(which fswatch)"
|
||
fi
|
||
watch_dir="./src"
|
||
if [ ! -d "$watch_dir" ]; then
|
||
echo_error "src目录不存在!"
|
||
exit 1
|
||
else
|
||
echo_info "监听目录:$watch_dir"
|
||
fi
|
||
_pid=$(cat .daemon_pid | awk -F"\"pid\": " '{print $2}' | grep -v ^$ | sed 's/,//g')
|
||
if [ "$_pid" = "" ]; then
|
||
echo_error "未检测到框架进程"
|
||
exit 1
|
||
fi
|
||
fswatch $watch_dir | while read file
|
||
do
|
||
echo "Detect file change: $file"
|
||
kill -USR1 $_pid
|
||
done |