From 6beb1ddac3c283fbe710eaeec059b9b435ef4ebc Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Tue, 13 Feb 2018 13:17:16 +0200 Subject: [PATCH] hack/update-codegen.sh: fix finding api names. Use "find -exec" instead of plain "find | xargs" to fix handling of difficult file names (such as those containing spaces). Also, use "mapfile" for creating the array from the output instead of letting the shell split the results into the array. Add double quotes to places where variable handling needs it to prevent splitting and globbing. --- hack/update-codegen.sh | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index a6d4293fa2a..16d19f3a53f 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -82,32 +82,26 @@ INTERNAL_DIRS_CSV=$(IFS=',';echo "${INTERNAL_DIRS[*]// /,}";IFS=$) ${clientgen} --input-base="k8s.io/kubernetes/pkg/apis" --input="${INTERNAL_DIRS_CSV}" "$@" ${clientgen} --output-base "${KUBE_ROOT}/vendor" --output-package="k8s.io/client-go" --clientset-name="kubernetes" --input-base="k8s.io/kubernetes/vendor/k8s.io/api" --input="${GV_DIRS_CSV}" "$@" -listergen_internal_apis=( -$( - cd ${KUBE_ROOT} - find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort +mapfile -t listergen_internal_apis < <( + cd "${KUBE_ROOT}" + sort <(find pkg/apis -maxdepth 2 -name types.go -exec dirname {} \;) ) -) -listergen_internal_apis=(${listergen_internal_apis[@]/#/k8s.io/kubernetes/}) +listergen_internal_apis=("${listergen_internal_apis[@]/#/k8s.io/kubernetes/}") listergen_internal_apis_csv=$(IFS=,; echo "${listergen_internal_apis[*]}") ${listergen} --input-dirs "${listergen_internal_apis_csv}" "$@" -listergen_external_apis=( -$( - cd ${KUBE_ROOT}/staging/src - find k8s.io/api -name types.go | xargs -n1 dirname | sort -) +mapfile -t listergen_external_apis < <( + cd "${KUBE_ROOT}/staging/src" + sort <(find k8s.io/api -name types.go -exec dirname {} \;) ) listergen_external_apis_csv=$(IFS=,; echo "${listergen_external_apis[*]}") ${listergen} --output-base "${KUBE_ROOT}/vendor" --output-package "k8s.io/client-go/listers" --input-dirs "${listergen_external_apis_csv}" "$@" -informergen_internal_apis=( -$( - cd ${KUBE_ROOT} - find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort +mapfile -t informergen_internal_apis < <( + cd "${KUBE_ROOT}" + sort <(find pkg/apis -maxdepth 2 -name types.go -exec dirname {} \;) ) -) -informergen_internal_apis=(${informergen_internal_apis[@]/#/k8s.io/kubernetes/}) +informergen_internal_apis=("${informergen_internal_apis[@]/#/k8s.io/kubernetes/}") informergen_internal_apis_csv=$(IFS=,; echo "${informergen_internal_apis[*]}") ${informergen} \ --input-dirs "${informergen_internal_apis_csv}" \ @@ -115,12 +109,10 @@ ${informergen} \ --listers-package k8s.io/kubernetes/pkg/client/listers \ "$@" -informergen_external_apis=( -$( - cd ${KUBE_ROOT}/staging/src - # because client-gen doesn't do policy/v1alpha1, we have to skip it too - find k8s.io/api -name types.go | xargs -n1 dirname | sort | grep -v pkg.apis.policy.v1alpha1 -) +mapfile -t informergen_external_apis < <( + cd "${KUBE_ROOT}/staging/src" + # because client-gen doesn't do policy/v1alpha1, we have to skip it too + sort <(find k8s.io/api -name types.go -exec dirname {} \;) | grep -v pkg.apis.policy.v1alpha1 ) informergen_external_apis_csv=$(IFS=,; echo "${informergen_external_apis[*]}")