diff --git a/tool/install.sh b/tool/install.sh index 3ff9fdb..ae3e08d 100755 --- a/tool/install.sh +++ b/tool/install.sh @@ -18,6 +18,8 @@ path_to_executable="" default_install_path="/usr/local/bin" binary_name="chsrc" temp_install_dir="" # 用于存储临时安装目录 +helpflag=0 +lan="zh" # 输出相关信息 info() { @@ -32,14 +34,27 @@ error() { # 显示 chsrc 安装程序的帮助信息,包括使用说明和可用选项 help() { - echo "chsrc Installer" - echo - echo "使用: install.sh [-h] [-d <安装目录>] [-v <版本号>]" - echo "选项:" - echo "-h 打印此帮助信息" - echo "-d 指定安装目录,默认为 /usr/local/bin;如果已安装,则覆盖旧版本" - echo "-v 指定版本号,范围是 0.1.4 到 0.1.9 或 'pre'" - echo + if [ "$lan" = "zh" ]; then + echo "chsrc-installer: 在任何类Unix操作系统上安装 chsrc" + echo + echo "使用: install.sh [选项]" + echo "选项:" + echo " -h 打印此帮助信息" + echo " -d 指定安装目录,默认为 /usr/local/bin;若已安装,则覆盖旧版本" + echo " -v 指定 chsrc 版本" + echo " -l 指定脚本语言,支持 zh 和 en " + echo + else + echo "chsrc-installer: Install chsrc on any Unix-like OS" + echo + echo "Usage: install.sh [options]" + echo "Options:" + echo " -h Print this help information" + echo " -d Specify installation directory, default is /usr/local/bin; will overwrite if already installed" + echo " -v Specify chsrc version" + echo " -l Specify script language, supports zh and en" + echo + fi } # 确定下载路径 @@ -50,19 +65,46 @@ set_install_path() { # 检查路径是否存在,如果不存在则创建该路径 if [ ! -d "$install_dir" ]; then - echo "目录 $install_dir 不存在,正在创建..." - mkdir -p "$install_dir" || { echo "创建目录失败,请重试"; exit 1; } + # 多种语言输出 + if [ "$lan" = "zh" ]; then + echo "目录 $install_dir 不存在,正在创建..." + else + echo "Directory $install_dir does not exist. Creating..." + fi + # 多语言输出 + if ! mkdir -p "$install_dir"; then + if [ "$lan" = "zh" ]; then + echo "创建目录失败,请重试" + else + echo "Failed to create directory, please try again" + fi + exit 1 + fi + temp_install_dir="$install_dir" # 记录临时安装目录 fi + elif existing_path=$(command -v "$binary_name" 2>/dev/null); then - info "$binary_name 已安装,更新路径: ${existing_path}" + + if [ "$lan" = "zh"]; then + info "$binary_name 已安装,更新路径: ${existing_path}" + else + info "$binary_name is already installed, updating path: ${existing_path}" + fi + install_dir=$(dirname "$existing_path") else # 检查默认路径 if [ -d "$default_install_path" ] && [ -w "$default_install_path" ]; then install_dir="$default_install_path" else - error "默认下载路径 /usr/local/bin 不可写,请使用 sudo 命令运行脚本;或通过 -d 参数指定其它路径安装" + + if [ "$lan" = "zh"]; then + error "默认下载路径 /usr/local/bin 不可写,请使用 sudo 命令运行脚本;或通过 -d 参数指定其它路径安装" + else + error "Default download path /usr/local/bin is not writable. Please run the script with sudo; or specify another path using the -d option." + fi + fi fi } @@ -76,7 +118,13 @@ install() { aarch64|arm64) arch="aarch64" ;; riscv64) arch="riscv64" ;; armv7*) arch="armv7" ;; - *) error "不支持的架构: ${arch}" ;; + *) + if [ "$lan" = "zh" ]; then + error "不支持的架构: ${arch}" + else + error "Unsupported architecture: ${arch}" + fi + ;; esac platform="$(uname -s | awk '{print tolower($0)}')" @@ -84,32 +132,62 @@ install() { case "$platform" in linux) platform="linux" ;; darwin) platform="macos" ;; - *) error "不支持的平台: ${platform}" ;; + *) + if [ "$lan" = "zh" ]; then + error "不支持的平台: ${platform}" + else + error "Unsupported platform: ${platform}" + fi + ;; esac if [[ ! "$version" =~ ^(pre|0\.1\.([4-9]))$ ]]; then # version 不符合条件,报错 - error "不支持的版本: ${version},版本号必须在 0.1.4 到 0.1.9 之间或为 'pre'" + if [ "$lan" = "zh" ]; then + error "不支持的版本: ${version},版本号必须在 0.1.4 到 0.1.9 之间或为 'pre'" + else + error "Unsupported version: ${version}. Version number must be between 0.1.4 and 0.1.9 or 'pre'" + fi fi url="https://gitee.com/RubyMetric/chsrc/releases/download/${version}/${binary_name}-${arch}-${platform}" path_to_executable="${install_dir}/${binary_name}" - - info "下载 ${binary_name} (${arch} 架构, ${platform} 平台, ${version}版本) 到 ${path_to_executable}" + + if [ "$lan" = "zh" ]; then + info "下载 ${binary_name} (${arch} 架构, ${platform} 平台, ${version}版本) 到 ${path_to_executable}" + else + info "Downloading ${binary_name} (${arch} architecture, ${platform} platform, version ${version}) to ${path_to_executable}" + fi if curl -sL "$url" -o "$path_to_executable"; then chmod +x "$path_to_executable" - info "🎉 安装完成,路径: $path_to_executable" + + if [ "$lan" = "zh" ]; then + info "🎉 安装完成,版本: $version,路径: $path_to_executable" + else + info "🎉 Installation completed, path: $path_to_executable" + fi + else - error "下载失败,请检查您的网络连接和代理设置: ${url}" + if [ "$lan" = "zh" ]; then + error "下载失败,请检查您的网络连接和代理设置: ${url}" + else + error "Download failed, please check your network connection and proxy settings: ${url}" + fi + fi } # 清理函数 cleanup() { if [ -n "$temp_install_dir" ] && [ -d "$temp_install_dir" ]; then - echo "清理创建的目录: $temp_install_dir" + + if [ "$lan" = "zh" ]; then + echo "清理创建的目录: $temp_install_dir" + else + echo "Cleaning up created directory: $temp_install_dir" + fi rm -rf "$temp_install_dir" fi } @@ -118,11 +196,10 @@ cleanup() { trap cleanup EXIT # 从命令行读取 安装路径与版本号 -while getopts ":hd:v:" option; do +while getopts ":hd:v:l:" option; do case $option in h) - help - exit 0 + helpflag=1 ;; d) install_dir=${OPTARG} @@ -130,6 +207,9 @@ while getopts ":hd:v:" option; do v) version=${OPTARG} ;; + l) + lan=${OPTARG} + ;; \?) echo "无效的命令行选项。使用 -h 查看帮助" exit 1 @@ -137,5 +217,15 @@ while getopts ":hd:v:" option; do esac done +# 判断语言的类型,不符合直接退出 +if [[ "$lan" != "zh" && "$lan" != "en" ]]; then + error "无效的语言选项: $lan。支持的选项是 zh 和 en" +fi + +if [ "$helpflag" -eq 1 ]; then + help + exit 0; +fi + set_install_path install \ No newline at end of file