mirror of https://github.com/kubernetes/kops.git
				
				
				
			
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Copyright 2019 The Kubernetes Authors.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| # common.sh has helper functions, and is sourced by the other scripts in this directory
 | |
| set -o errexit
 | |
| set -o nounset
 | |
| set -o pipefail
 | |
| 
 | |
| KOPS_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. >/dev/null 2>&1 && pwd )"
 | |
| TOOLS_BIN="${KOPS_ROOT}/_output/bin"
 | |
| export KOPS_ROOT TOOLS_BIN
 | |
| 
 | |
| kube::util::array_contains() {
 | |
|   local search="$1"
 | |
|   local element
 | |
|   shift
 | |
|   for element; do
 | |
|     if [[ "${element}" == "${search}" ]]; then
 | |
|       return 0
 | |
|     fi
 | |
|   done
 | |
|   return 1
 | |
| }
 | |
| 
 | |
| kube::util::read-array() {
 | |
|   # shellcheck disable=SC2034
 | |
|   local i=0
 | |
|   unset -v "$1"
 | |
|   while IFS= read -r "$1[i++]"; do :; done
 | |
|   eval "[[ \${$1[--i]} ]]" || unset "$1[i]" # ensures last element isn't empty
 | |
| }
 | |
| 
 | |
| kube::util::trap_add() {
 | |
|   local trap_add_cmd
 | |
|   trap_add_cmd=$1
 | |
|   shift
 | |
| 
 | |
|   for trap_add_name in "$@"; do
 | |
|     local existing_cmd
 | |
|     local new_cmd
 | |
| 
 | |
|     # Grab the currently defined trap commands for this trap
 | |
|     existing_cmd=$(trap -p "${trap_add_name}" |  awk -F"'" '{print $2}')
 | |
| 
 | |
|     if [[ -z "${existing_cmd}" ]]; then
 | |
|       new_cmd="${trap_add_cmd}"
 | |
|     else
 | |
|       new_cmd="${trap_add_cmd};${existing_cmd}"
 | |
|     fi
 | |
| 
 | |
|     # Assign the test. Disable the shellcheck warning telling that trap
 | |
|     # commands should be single quoted to avoid evaluating them at this
 | |
|     # point instead evaluating them at run time. The logic of adding new
 | |
|     # commands to a single trap requires them to be evaluated right away.
 | |
|     # shellcheck disable=SC2064
 | |
|     trap "${new_cmd}" "${trap_add_name}"
 | |
|   done
 | |
| }
 |