Browse Source

优化国内golang下载

Jrohy 4 years ago
parent
commit
8450a59ea9
2 changed files with 35 additions and 7 deletions
  1. 8 2
      README.md
  2. 27 5
      install.sh

+ 8 - 2
README.md

@@ -2,7 +2,7 @@
 ![](https://img.shields.io/github/stars/Jrohy/go-install.svg)
 ![](https://img.shields.io/github/forks/Jrohy/go-install.svg) 
 ![](https://img.shields.io/github/license/Jrohy/go-install.svg)  
-一键安装最新版golang, 国内vps自动设置GOPROXY([goproxy.cn](https://goproxy.cn))
+一键安装最新版golang, 国内vps使用[go镜像源](https://gomirrors.org/)下载并自动设置GOPROXY([goproxy.cn](https://goproxy.cn))
 
 ## 安装/更新 最新版golang
 ```
@@ -12,4 +12,10 @@ source <(curl -L https://go-install.netlify.app/install.sh)
 ## 安装/更新 指定版本golang
 ```
 source <(curl -L https://go-install.netlify.app/install.sh) -v 1.13.5
-``` 
+``` 
+
+## 强制更新golang
+默认更新策略是已有版本和最新版本一样就不去更新, 要强制更新添加-f
+```
+source <(curl -L https://go-install.netlify.app/install.sh) -f
+```

+ 27 - 5
install.sh

@@ -7,6 +7,10 @@
 
 INSTALL_VERSION=""
 
+CAN_GOOGLE=1
+
+FORCE_MODE=0
+
 PROXY_URL="https://goproxy.cn"
 
 #######color code########
@@ -30,6 +34,11 @@ while [[ $# > 0 ]];do
         echo -e "准备安装$(colorEcho ${BLUE} $INSTALL_VERSION)版本golang..\n"
         shift
         ;;
+        -f)
+        FORCE_MODE=1
+        echo -e "强制更新golang..\n"
+        shift
+        ;;
         *)
                 # unknown option
         ;;
@@ -73,9 +82,13 @@ setupEnv(){
     source /etc/profile
 }
 
-setupProxy(){
+checkNetwork(){
     ipIsConnect "golang.org"
-    if [[ ! $? -eq 0 && `go env|grep proxy.golang.org` ]]; then
+    [[ ! $? -eq 0 ]] && CAN_GOOGLE=0
+}
+
+setupProxy(){
+    if [[ $CAN_GOOGLE == 0 && `go env|grep proxy.golang.org` ]]; then
         go env -w GO111MODULE=on
         go env -w GOPROXY=$PROXY_URL,direct
         colorEcho $GREEN "当前网络环境为国内环境, 成功设置goproxy代理!"
@@ -104,16 +117,24 @@ sysArch(){
 installGo(){
     if [[ -z $INSTALL_VERSION ]];then
         echo "正在获取最新版golang..."
-        INSTALL_VERSION=`curl -s https://github.com/golang/go/releases|grep releases/tag|sed '/beta/d'|sed '/rc/d'|grep -o "[0-9].*[0-9]"|head -n 1`
+        if [[ $CAN_GOOGLE == 0 ]];then
+            INSTALL_VERSION=`curl -s https://gomirrors.org/|grep -w downloadBox|grep src| grep -oP '\d*\.\d+'`
+        else
+            INSTALL_VERSION=`curl -s https://github.com/golang/go/releases|grep releases/tag|sed '/beta/d'|sed '/rc/d'|grep -o "[0-9].*[0-9]"|head -n 1`
+        fi
         echo "最新版golang: `colorEcho $BLUE $INSTALL_VERSION`"
-        if [[ `command -v go` ]];then
+        if [[ $FORCE_MODE == 0 && `command -v go` ]];then
             if [[ `go version|awk '{print $3}'|grep -Eo "[0-9.]+"` == $INSTALL_VERSION ]];then
                 return
             fi
         fi
     fi
     FILE_NAME="go${INSTALL_VERSION}.$VDIS.tar.gz"
-    curl -L https://dl.google.com/go/$FILE_NAME -o $FILE_NAME
+    if [[ $CAN_GOOGLE == 0 ]];then
+        curl -L https://gomirrors.org/dl/go/$FILE_NAME -o $FILE_NAME
+    else
+        curl -L https://dl.google.com/go/$FILE_NAME -o $FILE_NAME
+    fi
     [[ -e /usr/local/go ]] && rm -rf /usr/local/go
     tar -C /usr/local -xzf $FILE_NAME
     rm -f $FILE_NAME
@@ -121,6 +142,7 @@ installGo(){
 
 main(){
     sysArch
+    checkNetwork
     installGo
     setupEnv
     setupProxy