#!/usr/bin/env bash
set -o errexit
set -o errtrace
set -o nounset
set -o pipefail
TAG="CMD"
LOG_PATH="/tmp/shell/logs"
LOG_FILE="${LOG_PATH}/install_spacevim_$(date +"%Y%m%d").log"
HIDE_LOG=true
function log() {
[ ! -d "${LOG_PATH}" ] && mkdir -p "${LOG_PATH}"
if [ $HIDE_LOG ]; then
echo -e "[$(date +"%Y/%m/%d:%H:%M:%S %z")] [$(whoami)] [$TAG]" "${@}" >> "${LOG_FILE}"
else
echo "[$(date +"%Y/%m/%d:%H:%M:%S %z")] [$(whoami)] [$TAG]" "${@}" | tee -a "${LOG_FILE}"
fi
}
function script_trap_err() {
local exit_code=1
trap - ERR
set +o errexit
set +o pipefail
log "[E] ERROR" "${@}"
status_closure clear_spacevim_env
exit "$exit_code"
}
function script_trap_exit() {
log "[I] shell exec done."
}
function print_color () {
case $1 in
red) echo -e "\033[31m$2 \033[0m" ;;
green) echo -e "\033[32m$2 \033[0m" ;;
yellow) echo -e "\033[33m$2 \033[0m" ;;
blue) echo -e "\033[34m$2 \033[0m" ;;
*) echo -e "\033[31m[Color Error]$2 \033[0m" ;;
esac
}
function status_closure () {
print_color "green" "${1}"
eval "${*}"
print_color "green" "${1} executed successfully"
}
function help() {
echo "Usage: ./install_spacevim.sh [-h -c -v -r]"
echo " -h : display this help and exit"
echo " -c : config spacevim and exit"
echo " -v : show spacevim help and exit"
echo " -r : remove sapcevim env and exit"
exit 0
}
function install_spacevim() {
print_color "green" "install spacevim current env"
curl -sLf https://spacevim.org/cn/install.sh | bash
}
function config_spacevim_env() {
print_color "green" "config spacevim current env"
if [ -f "${HOME}/.SpaceVim.d/init.toml" ];then rm -rf "${HOME}/.SpaceVim.d/init.toml"; fi
wget https://gitea.com/neet11/config-dev-env/raw/branch/main/.SpaceVim.d/init.toml -P "${HOME}/.SpaceVim.d" && \
chmod 644 "${HOME}/.SpaceVim.d/init.toml"
print_color "yellow" "config succeeded, need reopen vim"
}
function clear_spacevim_env() {
print_color "green" "clear spacevim current env"
curl -sLf https://spacevim.org/install.sh | bash -s -- --uninstall
sudo rm -rf "${HOME}/.SpaceVim"
sudo rm -rf "${HOME}/.SpaceVim.d"
}
function run_install_zsh() {
status_closure install_spacevim
}
function main() {
trap script_trap_err INT TERM QUIT HUP ERR
trap script_trap_exit EXIT
log "[I] shell start"
if [ "${#}" -ne 0 ]
then
case $1 in
-h|help)
help
;;
-v|version)
curl -sLf https://spacevim.org/install.sh | bash -s -- -h
;;
-r|remove)
status_closure clear_spacevim_env
;;
-c|config)
status_closure config_spacevim_env
;;
*)
print_color "red" "unknown parameter" && help
;;
esac
else
status_closure run_install_zsh
fi
}
main "${@}"