github.com/kaituanwang/hyperledger@v2.0.1+incompatible/scripts/check_go_version.sh (about)

     1  #!/bin/bash
     2  #
     3  # SPDX-License-Identifier: Apache-2.0
     4  
     5  set -e
     6  
     7  CI_VERSION="$(grep "GO_VER" ci.properties | cut -f2- -d'=')"
     8  GO_VERSION="$(go version | cut -f3 -d' ' | sed -E 's/^go//')"
     9  
    10  fail() {
    11      >&2 echo "ERROR: ${CI_VERSION} is required to build Fabric and you are using ${GO_VERSION}. Please update go."
    12      exit 2
    13  }
    14  
    15  vpos () {
    16      local v
    17      v="$(echo "$1" | sed -E 's/([[:digit:]]+)\.([[:digit:]]+)(\.([[:digit:]]+))?/'"\\$2"'/g')"
    18      echo "${v:-0}"
    19  }
    20  version() {
    21      vpos "$1" 1
    22  }
    23  release() {
    24      vpos "$1" 2
    25  }
    26  patch () {
    27      vpos "$1" 4
    28  }
    29  
    30  # major versions must match
    31  [ "$(version "$GO_VERSION")" -eq "$(version "$CI_VERSION")" ] || fail
    32  
    33  # go release must be >= ci release
    34  [ "$(release "$GO_VERSION")" -ge "$(release "$CI_VERSION")" ] || fail
    35  
    36  # if releases are equal, patch must be >= ci patch
    37  if [ "$(release "$GO_VERSION")" -eq "$(release "$CI_VERSION")" ]; then
    38      [ "$(patch "$GO_VERSION")" -ge "$(patch "$CI_VERSION")" ] || fail
    39  fi
    40  
    41  # versions are equal and go release > required ci release
    42  exit 0