diff --git a/hack/install_kustomize.sh b/hack/install_kustomize.sh index e56f24a31..7dd42ee3e 100755 --- a/hack/install_kustomize.sh +++ b/hack/install_kustomize.sh @@ -1,12 +1,15 @@ -#!/bin/bash +#!/usr/bin/env bash # If no argument is given -> Downloads the most recently released # kustomize binary to your current working directory. # (e.g. 'install_kustomize.sh') # -# If an argument is given -> Downloads the specified version of the -# kustomize binary to your current working directory. -# (e.g. 'install_kustomize.sh 3.8.2') +# If one argument is given -> +# If that argument is in the format of #.#.#, downloads the specified +# version of the kustomize binary to your current working directory. +# If that argument is something else, downloads the most recently released +# kustomize binary to the specified directory. +# (e.g. 'install_kustomize.sh 3.8.2' or 'install_kustomize.sh $(go env GOPATH)/bin') # # If two arguments are given -> Downloads the specified version of the # kustomize binary to the specified directory. @@ -14,22 +17,39 @@ # # Fails if the file already exists. -curl_timeout=600 - -version="" -release_url=https://api.github.com/repos/kubernetes-sigs/kustomize/releases -if [ -n "$1" ]; then - version=v$1 - release_url=${release_url}/tags/kustomize%2F$version -fi +set -e where=$PWD -if [ -n "$2" ]; then - where=$2 + +release_url=https://api.github.com/repos/kubernetes-sigs/kustomize/releases +if [ -n "$1" ]; then + if [[ "$1" =~ ^[0-9]+(\.[0-9]+){2}$ ]]; then + version=v$1 + release_url=${release_url}/tags/kustomize%2F$version + elif [ -n "$2" ]; then + echo "The first argument should be the requested version." + exit 1 + else + where="$1" + fi fi -if [ -f $where/kustomize ]; then - echo "A file named $where/kustomize already exists (remove it first)." +if [ -n "$2" ]; then + where="$2" +fi + +if ! test -d "$where"; then + echo "$where does not exist. Create it first." + exit 1 +fi + +where="$(readlink -f $where)/" + +if [ -f "${where}kustomize" ]; then + echo "${where}kustomize exists. Remove it first." + exit 1 +elif [ -d "${where}kustomize" ]; then + echo "${where}kustomize exists and is a directory. Remove it first." exit 1 fi @@ -43,9 +63,9 @@ function cleanup { rm -rf "$tmpDir" } -trap cleanup EXIT +trap cleanup EXIT ERR -pushd $tmpDir >& /dev/null +pushd "$tmpDir" >& /dev/null opsys=windows arch=amd64 @@ -55,23 +75,24 @@ elif [[ "$OSTYPE" == darwin* ]]; then opsys=darwin fi -curl -m $curl_timeout -s $release_url |\ +RELEASE_URL=$(curl -s $release_url |\ grep browser_download.*${opsys}_${arch} |\ cut -d '"' -f 4 |\ - sort -V | tail -n 1 |\ - xargs curl -m $curl_timeout -sLO + sort -V | tail -n 1) -if [ -e ./kustomize_v*_${opsys}_amd64.tar.gz ]; then - tar xzf ./kustomize_v*_${opsys}_amd64.tar.gz -else - echo "Error: kustomize binary with the version ${version#v} does not exist!" - exit 1 +if [ ! -n "$RELEASE_URL" ]; then + echo "Version $version does not exist." + exit 1 fi -cp ./kustomize $where +curl -sLO $RELEASE_URL + +tar xzf ./kustomize_v*_${opsys}_${arch}.tar.gz + +cp ./kustomize "$where" popd >& /dev/null -$where/kustomize version +${where}kustomize version -echo kustomize installed to $where +echo "kustomize installed to ${where}kustomize"