#!/usr/bin/zsh ##################################### # 自动配置常用开发环境 # # [x] go # # [x] rust # # [ ] java # # [ ] nodejs # ##################################### # 不使用包管理器, 直接用官网的二进制包 # 龙芯旧世界更新频率低, 且迟早被弃用, 旧世界仅做有限支持 ############################################################################# # 变量 # ############################################################################# # 加载基础环境 source $HOME/.config/xunmi/信息 # source $HOME/x/公共/函数.zsh source ${言灵一路径}/x/公共/函数.zsh 路径一开发环境="${言灵一路径}/ide" mkdir -p ${路径一开发环境} # 配置全局变量 local 旧世界一下载地址="http://ftp.loongnix.cn" typeset -A 语言一GO=( ['组件']=('go' 'gofmt') ['下载地址']="https://golang.google.cn/dl/" ['版本正则']="go1.*linux-架构\.tar\.gz" ['旧世界版本']="go1.22.0" ) typeset -A 语言一RUST=( ['组件']=('rustc' 'cargo') ['下载地址']="http://ftp.loongnix.cn/toolchain/rust/rust-1.78/2024-05-06/abi1.0/" ['版本正则']="rust.*-架构-unknown-linux-gnu\.tar\.gz" ['旧世界版本']="1.78.0" ) ############################################################################# # 函数(func) # ############################################################################# 开发环境一检测一GO(){ # 检测安装情况 unset 下载地址 # 获取在线版本 版本一在线=$(curl -s ${语言一GO[下载地址]} | grep -o $(echo "${语言一GO[版本正则]}" | sed "s/架构/${言灵一系统架构}/g") | head -n 1) 语言一GO[下载地址]="${语言一GO[下载地址]}${版本一在线}" if [[ ${系统一世界类型} == "旧世界" ]]; then 输出 4 "[GO检测]旧世界支持开发兼容性较差,建议尽快迁移进入龙芯新世界!" 版本一在线=${语言一GO[旧世界版本]} 语言一GO[下载地址]="${旧世界一下载地址}/toolchain/golang/${版本一在线%.*}/abi1.0/${版本一在线}.linux-loong64.tar.gz" fi 输出 2 "[GO检测]在线版本: ${版本一在线%.linux*}" # 对比本地版本 if [ -x "$(command -v go)" ]; then 版本一本地="$(echo $(go version) | awk '{print $3}')" # 判断版本新旧 输出 2 "[GO检测]本地版本: ${版本一本地}" if 版本对比 "${版本一本地}" "${版本一在线%.linux*}"; then 输出 2 "[GO检测]发现新版本GO" return 1 fi 输出 2 "[GO检测]已是最新的GO版本" return 0 fi 输出 2 "[GO检测]未检测到GO语言的本地版本" return 1 } 开发环境一检测一RUST(){ # 检测安装情况 # 获取在线版本 版本一在线=$(curl -s ${语言一RUST[下载地址]} | grep -o $(echo "${语言一RUST[版本正则]}" | sed "s/架构/${言灵一系统架构}/g") | head -n 1) 语言一RUST[下载地址]="${语言一RUST[下载地址]}${版本一在线}" if [[ ${系统一世界类型} == "旧世界" ]]; then 输出 4 "[RUST检测]旧世界支持开发兼容性较差,建议尽快迁移进入龙芯新世界!" 版本一在线=${语言一RUST[旧世界版本]} 语言一RUST[下载地址]="${旧世界一下载地址}/toolchain/rust/${rust-版本一在线%.*}/2024-05-06/abi1.0/${rust-版本一在线}-loongarch64-unknown-linux-gnu.tar.gz " fi 输出 2 "[RUST检测]在线版本: ${版本一在线%.linux*}" # 对比本地版本 if [ -x "$(command -v rustc)" ]; then 版本一本地="$(echo $(rustc version) | awk '{print $2}')" # 判断版本新旧 输出 2 "[RUST检测]本地版本: ${版本一本地}" if 版本对比 "${版本一本地}" "${版本一在线%.loongarch64*}"; then 输出 2 "[RUST检测]发现新版本RUST" return 1 fi 输出 2 "[RUST检测]已是最新的RUST版本" return 0 fi 输出 2 "[RUST检测]未检测到RUST语言的本地版本" return 1 } # 用于检测当前版本是否最新 # 备注: 所有`开发环境一检测一*`返回0则代表无需更新,返回1则代表需要更新 # *-* -> 位置参数1 <- 需要检测的编程语言 开发环境一检测(){ } # 加载主机信息 开发环境一初始化(){ if [[ ${言灵一系统一主机架构} == "龙" ]]; then if [[ ${言灵一系统一世界类型} == "新世界" ]]; then 系统一主机架构="loong64" fi fi 系统一主机架构=${言灵一系统一主机架构} } 开发环境一部署一GO(){ 输出 2 "开始从 ${语言一GO[下载地址]} 下载部署最新版go语言" cd ${路径一开发环境} 获解 ${语言一GO[下载地址]} echo "# [觅库]GO语言环境变量-1" >> $HOME/.zshrc echo "export PATH=${路径一开发环境}/go/bin:\$PATH" >> $HOME/.zshrc echo "export GOPATH=$HOME/.goenv" >> $HOME/.zshrc source $HOME/.zshrc go env -w GOPROXY=https://goproxy.cn 输出 0 "成功安装GO语言($(go version)), 并自动切换为国内GO语言下载源, 重启zsh生效!" cd - } 开发环境一部署(){ } ############################################################################### # 主函数(main) # ############################################################################### 开发环境一初始化 开发环境一检测一GO # 开发环境一部署一GO: