2021SC@SDUSC
frontend.sh代码如下:
#!/bin/bash
require 'styles'
guess_rime_user_dir() {
if [[ -n "${rime_dir}" ]]; then
return
fi
if [[ -z "${rime_frontend}" ]]; then
# guess frontend by OS
case "$OSTYPE" in
linux*)
export rime_frontend='rime/ibus-rime'
;;
darwin*)
export rime_frontend='rime/squirrel'
;;
cygwin* | msys* | win*)
# Weasel
export rime_frontend='rime/weasel'
;;
*)
echo $(warning 'WARNING:') 'Unknown OSTYPE:' $(print_option "$OSTYPE")
;;
esac
fi
# install to default rime user directory
case "${rime_frontend}" in
fcitx/fcitx-rime | fcitx-rime)
export rime_dir="$HOME/.config/fcitx/rime"
;;
fcitx5/fcitx5-rime | fcitx5-rime)
export rime_dir="$HOME/.local/share/fcitx5/rime"
;;
rime/ibus-rime | ibus-rime)
export rime_dir="$HOME/.config/ibus/rime"
;;
rime/squirrel | squirrel)
export rime_dir="$HOME/Library/Rime"
;;
rime/weasel | weasel)
export rime_dir="$APPDATA\Rime"
;;
*)
echo $(warning 'WARNING:') 'Unknown Rime frontend:' $(print_option "${rime_frontend:-(unknown)}")
return
;;
esac
echo 'Installing for Rime frontend:' $(print_option "${rime_frontend:-(unknown)}")
}
provide 'frontend'
首先将"styles"加载到已导入模块(具体参加bootstrap.sh代码)。
来看guess_rime_user_dir函数。如果rime_dir不为零,就直接结束函数。也就是说开始时rime的目录必须为空值。如果rime_frontend为空值(因为前端为空才能进行自己的操作),进行接下来的操作:通过OS来猜测前端。
如果OSTYPE的值为linux,将前端导出为“rime/ibus-rime";为darwin,导出为”rime/squirrel";为cygwin或者msys或者win(为狼毫可用的系统),则导出为"rime/weasel".如果为其他的值,给个警告,输出Warning:"Unknown OSTYPE:" a.a为OSTYPE的值。
进行完上面的操作后,将前端安装到用户的默认目录。
如果rime_frontend的值为fcitx/fcitx-rime或者fcitx-rime,将rime_dir导出为“$HOME/.config/fcitx/rime";为 fcitx5/fcitx5-rime或者fcitx5-rime,导出为"$HOME/.local/share/fcitx5/rime";为rime/ibus-rime或者ibus-rime,导出为"$HOME/.config/ibus/rime";为 rime/squirrel 或者 squirrel,导出为"$HOME/Library/Rime",为 rime/weasel 或者 weasel,导出为"$APPDATA\Rime",其中$HOME 为用户名,$APPDATA的值为导入进来的与rime输入法的数据有关的相关值。如果为其他则报一个警告,表示rime-frontend的值是一个未知的东西。
最后为provide函数提供了一个参数”frontend",导入该前端模块的名称。



