From 7f4c61831e8364093e045168d88c755d6aa4c01e Mon Sep 17 00:00:00 2001 From: RainbowMango Date: Fri, 8 Jan 2021 18:26:28 +0800 Subject: [PATCH] add common function to install go tools Signed-off-by: RainbowMango --- hack/generate-cert.sh | 9 +++------ hack/update-crdgen.sh | 12 +++++------- hack/util.sh | 23 +++++++++++++++++++++++ hack/verify-staticcheck.sh | 8 +++++--- 4 files changed, 36 insertions(+), 16 deletions(-) create mode 100755 hack/util.sh diff --git a/hack/generate-cert.sh b/hack/generate-cert.sh index f9798d595..3e4951ac5 100755 --- a/hack/generate-cert.sh +++ b/hack/generate-cert.sh @@ -15,6 +15,8 @@ CONTROLPLANE_SUDO=$(test -w "${CERT_DIR}" || echo "sudo -E") ROOT_CA_FILE=${CERT_DIR}/server-ca.crt SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. +source hack/util.sh + # check whether openssl is installed. function ensure_openssl { OPENSSL_BIN=$(command -v openssl) @@ -32,12 +34,7 @@ function ensure-cfssl { return 0 fi - # Install cfssl tools we need. - TEMP_PATH=$(mktemp -d) - pushd "${TEMP_PATH}" >/dev/null - GO111MODULE=on go get github.com/cloudflare/cfssl/cmd/...@"${CFSSL_VERSION}" - popd >/dev/null - rm -rf "${TEMP_PATH}" + util::install_tools "github.com/cloudflare/cfssl/cmd/..." ${CFSSL_VERSION} GOPATH=$(go env | grep GOPATH | awk -F '=' '{print $2}'| sed 's/\"//g') CFSSL_BIN="${GOPATH}/bin/cfssl" diff --git a/hack/update-crdgen.sh b/hack/update-crdgen.sh index f476e49e6..017417b3c 100755 --- a/hack/update-crdgen.sh +++ b/hack/update-crdgen.sh @@ -4,13 +4,11 @@ set -o errexit set -o nounset set -o pipefail -CONTROLLER_GEN_VERSION="v0.4.1" +CONTROLLER_GEN_PKG="sigs.k8s.io/controller-tools/cmd/controller-gen" +CONTROLLER_GEN_VER="v0.4.1" -# Install tools we need. -TEMP_PATH=$(mktemp -d) -pushd "${TEMP_PATH}" >/dev/null - GO111MODULE=on go get sigs.k8s.io/controller-tools/cmd/controller-gen@"${CONTROLLER_GEN_VERSION}" -popd >/dev/null -rm -rf "${TEMP_PATH}" +source hack/util.sh + +util::install_tools ${CONTROLLER_GEN_PKG} ${CONTROLLER_GEN_VER} controller-gen crd paths=./pkg/apis/... output:crd:dir=./artifacts/deploy diff --git a/hack/util.sh b/hack/util.sh new file mode 100755 index 000000000..4a00b1d1e --- /dev/null +++ b/hack/util.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +# This function installs a Go tools by 'go get' command. +# Parameters: +# - $1: package name, such as "sigs.k8s.io/controller-tools/cmd/controller-gen" +# - $2: package version, such as "v0.4.1" +# Note: +# Since 'go get' command will resolve and add dependencies to current module, that may update 'go.mod' and 'go.sum' file. +# So we use a temporary directory to install the tools. +function util::install_tools() { + local package="$1" + local version="$2" + + temp_path=$(mktemp -d) + pushd "${temp_path}" >/dev/null + GO111MODULE=on go get "${package}"@"${version}" + popd >/dev/null + rm -rf "${temp_path}" +} diff --git a/hack/verify-staticcheck.sh b/hack/verify-staticcheck.sh index 31657994d..2f0f171b3 100755 --- a/hack/verify-staticcheck.sh +++ b/hack/verify-staticcheck.sh @@ -5,11 +5,13 @@ set -o nounset set -o pipefail REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. +GOLANGCI_LINT_PKG="github.com/golangci/golangci-lint/cmd/golangci-lint" +GOLANGCI_LINT_VER="v1.32.2" -# TODO(RainbowMango): Pin golangci-lint verison to @v1.32.2 -# go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.32.2 +cd "${REPO_ROOT}" +source "hack/util.sh" -cd ${REPO_ROOT} +util::install_tools ${GOLANGCI_LINT_PKG} ${GOLANGCI_LINT_VER} if golangci-lint run; then echo 'Congratulations! All Go source files have passed staticcheck.'