#!/usr/bin/env bash # see man tput, man terminfo RED=$(tput setaf 1) GREEN=$(tput setaf 2) BOLD=$(tput bold) NORMAL=$(tput sgr0) GIT_REPOS=( https://github.com/rime/rime-prelude https://github.com/rime/rime-essay https://github.com/rime/rime-cantonese https://github.com/rime/rime-cangjie https://github.com/rime/rime-quick https://github.com/rime/rime-stroke https://github.com/philipposkhos/rime-ms-quick https://github.com/kennethso168/rime-cangjie3-extension ) REQUIRED_FILES_RIME_PRELUDE=( "default.yaml" "key_bindings.yaml" "punctuation.yaml" "symbols.yaml" ) REQUIRED_FILES_RIME_ESSAY=( "essay.txt" ) REQUIRED_FILES_RIME_CANTONESE=( "essay-cantonese.txt" "jyut6ping3.chars.dict.yaml" "jyut6ping3.dict.yaml" "jyut6ping3.lettered.dict.yaml" "jyut6ping3.maps.dict.yaml" "jyut6ping3.phrase.dict.yaml" "jyut6ping3.schema.yaml" "jyut6ping3.words.dict.yaml" "jyut6ping3_ipa.schema.yaml" "opencc/" # This is a forder "symbols_cantonese.yaml" ) REQUIRED_FILES_RIME_CANGJIE=( "cangjie5.dict.yaml" "cangjie5.schema.yaml" "cangjie5_express.schema.yaml" ) REQUIRED_FILES_RIME_QUICK=( "quick5.dict.yaml" "quick5.schema.yaml" ) REQUIRED_FILES_RIME_STROKE=( "stroke.dict.yaml" "stroke.schema.yaml" ) REQUIRED_FILES_RIME_MS_QUICK=( "ms_quick.dict.yaml" "ms_quick.schema.yaml" "quickcang5.jyut.dict.yaml" "quickcang5.simp_voc.dict.yaml" "quickcang5.voc_luna.dict.yaml" ) REQUIRED_FILES_RIME_CANGJIE3_EXTENSION=( "cangjie5.cj3ext.dict.yaml" "cangjie5.custom.yaml" ) DEPENDENCIES=("git") exists() { type "$1" >/dev/null 2>&1; } # dependencies check for DEP in "${DEPENDENCIES[@]}"; do if ! exists "$DEP"; then echo "${RED}${BOLD}$DEP is not installed, aborting...${NORMAL}" exit 1 fi done # Start script # mkdir -p rime for REPO in "${GIT_REPOS[@]}"; do # Get directory name from REPO URL DIR=$(echo "$REPO" | rev | cut -f1 -d '/' |rev) # If directory exists by previous run, delete it if [ -d "$DIR" ]; then rm -rf "$DIR" fi # https://unix.stackexchange.com/questions/732093/bash-loop-associative-array-with-variable-array-name # nameref: declare -n VARNAME="REQUIRED_FILES_$(echo "$DIR" | sed 's/-/_/g' | tr '[:lower:]' '[:upper:]')" declare -n FILE_ARRAY=$VARNAME if [ "$VARNAME" = "REQUIRED_FILES_RIME_CANTONESE" ];then BRANCH="main" else BRANCH="master" fi mkdir "$DIR" # cd inside this scope. no longer cd into $DIR when out of scope ( cd "$DIR" || exit # https://stackoverflow.com/questions/65524512/how-to-disable-git-message-about-git-initial-branch-name # disable git init hints git -c "init.defaultBranch=$BRANCH" init # enable sparse checkout (not enabling cone mode, meaning exact file match is required) git config core.sparseCheckout true # add required filenames to sparse-checkout file to make git pull only pull those files printf "%s\n" "${FILE_ARRAY[@]}" >.git/info/sparse-checkout # add remote URL git remote add origin "$REPO" # git pull with --depth 1 for quick download git pull --quiet --depth 1 origin "$BRANCH" # copy required files into rime directory cp -n -r -t ../rime "${FILE_ARRAY[@]}" ) rm -rf "$DIR" done cat <./rime/default.custom.yaml # https://github.com/rime/home/wiki/UserData # 用戶文件夾 # Rime 從「用戶文件夾」讀取用家自訂的配置。 # 輸入法運行時保存的數據如 用戶詞典、安裝信息、選項狀態等也放在這裏。 # # 小狼毫: 用戶文件夾的默認路徑爲 %APPDATA%\Rime。也可以通過「開始菜單\小狼毫輸入法\用戶文件夾」打開。 # 鼠鬚管: 用戶文件夾的路徑爲 ~/Library/Rime。也可以通過「系統輸入法菜單/鼠鬚管/用戶設定…」打開。 # ibus-rime: ~/.config/ibus/rime # fcitx-rime: ~/.config/fcitx/rime # fcitx5-rime: ~/.local/share/fcitx5/rime/ patch: schema_list: - schema: jyut6ping3 # 粵拼 - schema: cangjie5 # 倉頡五代 - schema: quick5 # 速成 - schema: ms_quick # 微軟速成 - schema: stroke # 五筆畫 EOF printf "%s\n" \ "" \ "${GREEN}${BOLD}\"rime\" directory is generated.${NORMAL}" \ "" \ "${GREEN}${BOLD}Follow the guide below to place it into the correct location.${NORMAL}" \ "${GREEN}${BOLD}https://github.com/rime/home/wiki/UserData${NORMAL}"