From fd4c677c6a718c13f83713b1a617e358272e54ce Mon Sep 17 00:00:00 2001 From: xunmi Date: Mon, 5 Feb 2024 17:46:26 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=92=8Cvim=E4=BC=98=E5=8C=96=E6=A8=A1?= =?UTF-8?q?=E5=9D=97,=20=E4=BC=98=E5=8C=96=E4=B8=BB=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 公共/函数.zsh | 4 +-- 公共/包管.zsh | 45 ++++++++++++++++++++++++ 安装.zsh | 94 ++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 113 insertions(+), 30 deletions(-) create mode 100644 公共/包管.zsh diff --git a/公共/函数.zsh b/公共/函数.zsh index 0039375..33a7b69 100644 --- a/公共/函数.zsh +++ b/公共/函数.zsh @@ -7,8 +7,8 @@ # 使用方法: 在言灵根目录下使用`. 公共/函数.zsh` -# 标识符 -龙言_公共函数=1 +# 启动言灵公共函数模块的标识符 +言灵_函数=1 ############################################################################### # 终端配色 # diff --git a/公共/包管.zsh b/公共/包管.zsh new file mode 100644 index 0000000..73736ac --- /dev/null +++ b/公共/包管.zsh @@ -0,0 +1,45 @@ +#!/usr/bin/zsh + +# 路径名称: 公共/包管.zsh +# 脚本作用: 统一不同发行版中预制的不同的包管理的功能 +# 当前支持的包管理器有: apt yum pacman +# 可实现的功能有 `包管_更新` `包管_安装` `包管_搜索` +# 第一作者: 寻觅(xunmiemail@vip.qq.com) +# 创建时间: 2024年2月5日11:25:00 +# 使用方法: 在言灵根目录下使用`. 公共/包管.zsh` + +# 启动言灵包管理模块的标识符 +言灵_包管=1 + +# 调用当前包管理器检查和更新 +# 参数 [ -n --no-update -不更 ] 携带此参数为仅检查更新 +# 参数 [ -y -确认 ] 跳过包管理器更新时的二次确认 +# 实例 `包管_更新 -n`; `包管_更新 -确认` +包管_更新() { + if [ -x "$(command -v apt)" ]; then + sudo apt-get update -qq + elif [ -x "$(command -v yum)" ]; then + sudo yum update + elif [ -x "$(command -v pacman)"]; then + sudo pacman -Syu + fi +} + +# 调用当前包管理器的安装模块 +包管_安装(){ + if [ -x "$(command -v apt)" ]; then + sudo apt -y install $1 + elif [ -x "$(command -v yum)" ]; then + sudo yum install -y $1 + elif [ -x "$(command -v pacman)" ]; then + sudo pacman -Sy --needed $1 + else + return 1 + fi +} + +# 默认会尝试使用 apt-file pkgfile 等第三方搜索工具, 未找到第三方搜索工具时尝试使用包管理器自带搜索模块 +# 参数 [ -n --no-file -原版 ] +包管_搜索() { + +} diff --git a/安装.zsh b/安装.zsh index 978647f..93f8cb7 100755 --- a/安装.zsh +++ b/安装.zsh @@ -6,7 +6,8 @@ export DEBIAN_FRONTEND=noninteractive # 加载系统配置 source /etc/os-release # 加载公共函数 -. ./公共/函数.zsh +. 公共/函数.zsh +. 公共/包管.zsh # 脚本在执行过程中遇到任何非零返回码的命令时立即退出 set -e @@ -15,8 +16,9 @@ set -e # 全局变量 # ############################################################################### -readonly 安装_通用_包=('wget' 'curl' 'git' 'vim') - +typeset -a 通用_包列表=('wget' 'curl' 'git' 'vim' 'sudo') +typeset -a 架构_包列表=() +typeset -a 系统_包列表=() readonly CPU_架构="$(uname -m)" readonly 系统_类型="$(uname -s)" readonly 系统_版本="$(uname -r)" @@ -30,20 +32,33 @@ readonly 系统_发行版_名称=$(echo "${NAME}") ############################################################################### # 函数/方法 # ############################################################################### + +# 调用包管理器批量安装 +批量安装(){ + typeset -a 包列表=($@) + 输出 2 "计划安装列表: ${包列表}" + for 包 in "${包列表[@]}";do + 输出 2 "正在安装 -> ${包} <-" + 色彩_灰色 + 包管_安装 ${包} + 色彩_清除 + done +} + 检查_架构() { case ${CPU_架构} in *x86_64*) 主机_架构="amd64" ;; *loong*) - 主机_架构="龙" - ;; - *) + 主机_架构="龙" + ;; + *) 输出 1 "暂不支持${色彩[3]} ${CPU_架构} ${色彩重置}架构" exit 1 ;; - esac - 输出 2 "检测到${色彩[1]} ${主机_架构} ${色彩重置}架构" + esac + 输出 2 "检测到${色彩[1]} ${主机_架构} ${色彩重置}架构" } 检查_发行版() { @@ -68,43 +83,66 @@ readonly 系统_发行版_名称=$(echo "${NAME}") fi } -输出_主机配置(){ - echo " - *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* - * 欢迎使用 言灵 配置脚本 * - * 一个可以让你在命令行中使用 * - * 中文的工具 * - *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* - " +配置检测(){ 输出 2 "主机信息检测模块启动" 检查_架构 检查_发行版 输出 0 "主机信息检测完毕" } -配置_包管理器(){ - 输出 2 "正在配置包管理器" - +优化_常用命令_vim(){ + 输出 2 "启动vim优化" + vim_配置路径=$HOME/.vim/pack/xunmi + typeset -a vim_包列表=('vim-airline') + 批量安装 ${vim_包列表[@]} && 输出 0 "vim依赖包安装完毕" + 色彩_灰色 + mkdir -vp ${vim_配置路径}/{opt,start} + # 树状目录 + git clone --depth 1 https://gitcode.com/mirrors/scrooloose/nerdtree.git ${vim_配置路径}/start + # 代码检查工具 + git clone --depth 1 https://gitcode.com/mirrors/dense-analysis/ale.git ${vim_配置路径}/start + cp -v 配置/vimrc $HOME/.vimrc + 色彩_清除 } 优化_常用命令(){ - readonly 列表=( - ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)," - ["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" - ["top"]="使用btop替代老旧的top" - ["cat"]="使用lsd替代老旧的ls, 需要rust的cargo" - ["sed"]="使用学习成本较低的sd替代sed" + typeset -A 列表=( + ["vim"]="添加常用配置项(允许复制 添加行号 显式当前行等), 常用插件(目录 语法检测)" + ["ls"]="使用lsd替代老旧的ls, 需要rust的cargo" + ["top"]="使用btop替代老旧的top" + ["cat"]="使用bat替代cat" + ["sed"]="使用学习成本较低的sd替代sed" ) + 输出 2 "正在优化 ${(k)列表} 命令" + # 遍历关联数组 + for 键 值 in ${(kv)列表}; do + if 是否 "是否启动 '${键}' 命令优化 -> ${值} <- "; then + 优化_常用命令_${键} + else + 输出 3 "已取消 ${键} 的优化" + fi + done } ############################################################################### # 入口(main) # ############################################################################### -输出_主机配置 -配置_包管理器 +echo " +*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +* 欢迎使用 言灵 配置脚本 * +*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +" +(( ${言灵_函数} == 1 )) && 输出 0 "公共函数模块初始化完成" || exit 1 +(( ${言灵_包管} == 1 )) && 输出 0 "包管理器模块初始化完成" || exit 2 -# 优化_常用命令 +配置检测 + +[[ ${#通用_包列表} -ne 0 ]] && 批量安装 ${通用_包列表[@]} && 输出 0 "通用包安装完毕" +[[ ${#架构_包列表} -ne 0 ]] && 批量安装 ${架构_包列表[@]} && 输出 0 "架构专用包安装完毕" +[[ ${#系统_包列表} -ne 0 ]] && 批量安装 ${系统_包列表[@]} && 输出 0 "系统发行版专用包安装完毕" + +优化_常用命令 # 配置_开发环境