X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=jjb%2Fkuberef%2Fkuberef-run-linting.sh;h=084eac91caea5ded80b73c0b1d3af31c37dab673;hb=456b9423aa58dea12867495ef611933aae8f25ab;hp=4f681ac5384f849d82297e055926ba309260e0d5;hpb=a0ce773fa8693c53ffb303c9241fd5f2c2592f1e;p=releng.git diff --git a/jjb/kuberef/kuberef-run-linting.sh b/jjb/kuberef/kuberef-run-linting.sh index 4f681ac53..084eac91c 100755 --- a/jjb/kuberef/kuberef-run-linting.sh +++ b/jjb/kuberef/kuberef-run-linting.sh @@ -12,9 +12,51 @@ set -o nounset set -o pipefail set -o xtrace +# _vercmp() - Function that compares two versions +function _vercmp { + local v1=$1 + local op=$2 + local v2=$3 + local result + + # sort the two numbers with sort's "-V" argument. Based on if v2 + # swapped places with v1, we can determine ordering. + result=$(echo -e "$v1\n$v2" | sort -V | head -1) + + case $op in + "==") + [ "$v1" = "$v2" ] + return + ;; + ">") + [ "$v1" != "$v2" ] && [ "$result" = "$v2" ] + return + ;; + "<") + [ "$v1" != "$v2" ] && [ "$result" = "$v1" ] + return + ;; + ">=") + [ "$result" = "$v2" ] + return + ;; + "<=") + [ "$result" = "$v1" ] + return + ;; + *) + die $LINENO "unrecognised op: $op" + ;; + esac +} + +echo "Requirements validation" # shellcheck disable=SC1091 source /etc/os-release || source /usr/lib/os-release +min_shellcheck_version=0.4.0 +min_tox_version=3.5 + pkgs="" if ! command -v shellcheck; then case ${ID,,} in @@ -26,20 +68,33 @@ if ! command -v shellcheck; then ;; esac fi - if ! command -v pip; then - pkgs+=" python-pip" + case ${ID,,} in + *suse*|rhel|centos|fedora) + pkgs+=" python3-pip python3-setuptools" + ;; + ubuntu|debian) + if _vercmp "${VERSION_ID}" '<=' "18.04"; then + pkgs+=" python-pip python-setuptools" + else + pkgs+=" python3-pip python3-setuptools" + fi + ;; + esac fi if [ -n "$pkgs" ]; then + echo "Requirements installation" case ${ID,,} in *suse*) sudo zypper install --gpg-auto-import-keys refresh - sudo -H -E zypper install -y --no-recommends "$pkgs" + # shellcheck disable=SC2086 + sudo -H -E zypper install -y --no-recommends $pkgs ;; ubuntu|debian) sudo apt-get update - sudo -H -E apt-get -y --no-install-recommends install "$pkgs" + # shellcheck disable=SC2086 + sudo -H -E apt-get -y --no-install-recommends install $pkgs ;; rhel|centos|fedora) PKG_MANAGER=$(command -v dnf || command -v yum) @@ -47,10 +102,29 @@ if [ -n "$pkgs" ]; then sudo -H -E "$PKG_MANAGER" -q -y install epel-release fi sudo "$PKG_MANAGER" updateinfo --assumeyes - sudo -H -E "${PKG_MANAGER}" -y install "$pkgs" + # shellcheck disable=SC2086 + sudo -H -E "$PKG_MANAGER" -y install $pkgs ;; esac + if ! command -v pip && command -v pip3 ; then + sudo ln -s "$(command -v pip3)" /usr/bin/pip + fi + sudo "$(command -v pip)" install --upgrade pip fi +if ! command -v tox || _vercmp "$(tox --version | awk '{print $1}')" '<' "$min_tox_version"; then + sudo "$(command -v pip)" install tox==$min_tox_version +fi + +echo "Server tools information:" +python -V +tox --version +shellcheck -V + +echo "Linting process execution" tox -e lint -bash -c 'shopt -s globstar; shellcheck **/*.sh' +if _vercmp "$(shellcheck --version | awk 'FNR==2{print $2}')" '<' "$min_shellcheck_version"; then + bash -c 'shopt -s globstar; shellcheck **/*.sh' +else + bash -c 'shopt -s globstar; shellcheck -x **/*.sh' +fi