#!/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@<\([^<>][^<>]*\)>\([^<>]*\)\1>@\2@g')
fi
if [ "${OS_TYPE}" == "GNU/Linux" ]; then
GO_SHA256=$(echo "${HASHE}" | grep -Po "(.*)" | sed 's@<\([^<>][^<>]*\)>\([^<>]*\)\1>@\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