#!/bin/sh set -e SCRIPT_VERSION="0.1.1" echo "[linux/amd64 | FreeBSD] GoLang check new version ${SCRIPT_VERSION} Script author: Ryabinin Sergey Vladimirovich dev@brigar.ru" GOWORK_PATH="$1" if [ $# -eq 0 ]; then echo "Please set argumen dirictory place install example: $0 \$HOME/DEV/go-pack" exit 1; fi if [ ! -d ${GOWORK_PATH} ]; then mkdir -p ${GOWORK_PATH} fi if [ ! -d ${GOWORK_PATH} ]; then echo "Please create mkdir -p ${GOWORK_PATH} " exit 1; fi OS_TYPE=$(uname -o) # FreeBSD | GNU/Linux CMD_GET="curl" if ! which "${CMD_GET}" >/dev/null; then echo "Please install ${CMD_GET}" exit 1; fi FILE_GET_URL="https://golang.org/dl/" GO_VERSION_NEW="$(${CMD_GET} -s ${FILE_GET_URL}|grep 'Stable versions' -C4|grep '
//')" if [ "${OS_TYPE}" == "FreeBSD" ]; then CMD_SHA256="sha256" GOFILE="${GO_VERSION_NEW}.freebsd-amd64.tar.gz" elif [ "${OS_TYPE}" == "GNU/Linux" ]; then CMD_SHA256="sha256sum" GOFILE="${GO_VERSION_NEW}.linux-amd64.tar.gz" else echo "Sorry: not detected os type" exit 1; fi if which go >/dev/null; then GO_VERSION_NEW_SYS=$(go version|grep -E -o "go[0-9]+[.0-9]+") else GO_VERSION_NEW_SYS="none" fi PROFILE_='export GO111MODULE=off GOWORK_PATH=${HOME}/DEV/go-pack export GOROOT=${GOWORK_PATH}/go export PATH=$PATH:$GOROOT/bin export GOPATH=${GOWORK_PATH}/Go export PATH=$PATH:$GOPATH/bin' if [ ! -n "${GOROOT}" ]; then echo "Please set GOROOT example in profile file /etc/profile or ~/.profile ${PROFILE_} " exit 1; fi if [ ! -n "${GOPATH}" ]; then echo "Please set GOROOT example in profile file /etc/profile or ~/.profile /etc/profile ${PROFILE_} " exit 1; fi if [ "${GO_VERSION_NEW_SYS}" == "${GO_VERSION_NEW}" ]; then echo "No new version Golang" echo "Your version Golang: [${GO_VERSION_NEW_SYS}] fetched version: [${GO_VERSION_NEW}]" exit 0; else echo "Golang new version is available" echo "Your version Golang: [${GO_VERSION_NEW_SYS}] fetched version: [${GO_VERSION_NEW}]" fi HASHE=$(${CMD_GET} -s ${FILE_GET_URL}|grep "${GOFILE}" -A5) if [ "${OS_TYPE}" == "FreeBSD" ]; then GO_SHA256=$(echo "${HASHE}" | grep -Eo "(.*)" | sed 's@<\([^<>][^<>]*\)>\([^<>]*\)@\2@g') fi if [ "${OS_TYPE}" == "GNU/Linux" ]; then GO_SHA256=$(echo "${HASHE}" | grep -Po "(.*)" | sed 's@<\([^<>][^<>]*\)>\([^<>]*\)@\2@g') fi echo "latest version: ${GO_VERSION_NEW}" echo "url: ${FILE_GET_URL}$GOFILE" echo "sha256: ${GO_SHA256}" cd /tmp; if [ ! -f /tmp/${GOFILE} ]; then echo "КАЧАЕМ: ${FILE_GET_URL}${GOFILE}" ${CMD_GET} -L "${FILE_GET_URL}${GOFILE}" -o /tmp/${GOFILE} fi if [ "${OS_TYPE}" == "FreeBSD" ]; then GO_SHA256_CRP=$(${CMD_SHA256} ${GOFILE}|awk '{print $4}') fi if [ "${OS_TYPE}" == "GNU/Linux" ]; then GO_SHA256_CRP=$(${CMD_SHA256} ${GOFILE}|awk '{print $1}') fi if [ "${GO_SHA256_CRP}" == "${GO_SHA256}" ]; then echo "Ok sum: ${GOFILE}"; rm -rf ${GOROOT}/go && tar -C ${GOWORK_PATH} -xzf ${GOFILE} unset GO_VERSION_NEW unset GO_SHA256 unset GO_SHA256_CRP else echo "Control summ not valid" echo "file sum: ${GO_SHA256_CRP}" echo "site sum: ${GO_SHA256}" fi