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.
This commit is contained in:
Ismo Puustinen 2018-02-13 13:17:16 +02:00
parent a9905f2ad3
commit 6beb1ddac3

View File

@ -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} --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}" "$@" ${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=( mapfile -t listergen_internal_apis < <(
$( cd "${KUBE_ROOT}"
cd ${KUBE_ROOT} sort <(find pkg/apis -maxdepth 2 -name types.go -exec dirname {} \;)
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
) )
) 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_internal_apis_csv=$(IFS=,; echo "${listergen_internal_apis[*]}")
${listergen} --input-dirs "${listergen_internal_apis_csv}" "$@" ${listergen} --input-dirs "${listergen_internal_apis_csv}" "$@"
listergen_external_apis=( mapfile -t listergen_external_apis < <(
$( cd "${KUBE_ROOT}/staging/src"
cd ${KUBE_ROOT}/staging/src sort <(find k8s.io/api -name types.go -exec dirname {} \;)
find k8s.io/api -name types.go | xargs -n1 dirname | sort
)
) )
listergen_external_apis_csv=$(IFS=,; echo "${listergen_external_apis[*]}") 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}" "$@" ${listergen} --output-base "${KUBE_ROOT}/vendor" --output-package "k8s.io/client-go/listers" --input-dirs "${listergen_external_apis_csv}" "$@"
informergen_internal_apis=( mapfile -t informergen_internal_apis < <(
$( cd "${KUBE_ROOT}"
cd ${KUBE_ROOT} sort <(find pkg/apis -maxdepth 2 -name types.go -exec dirname {} \;)
find pkg/apis -maxdepth 2 -name types.go | xargs -n1 dirname | sort
) )
) 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_internal_apis_csv=$(IFS=,; echo "${informergen_internal_apis[*]}")
${informergen} \ ${informergen} \
--input-dirs "${informergen_internal_apis_csv}" \ --input-dirs "${informergen_internal_apis_csv}" \
@ -115,12 +109,10 @@ ${informergen} \
--listers-package k8s.io/kubernetes/pkg/client/listers \ --listers-package k8s.io/kubernetes/pkg/client/listers \
"$@" "$@"
informergen_external_apis=( mapfile -t informergen_external_apis < <(
$( cd "${KUBE_ROOT}/staging/src"
cd ${KUBE_ROOT}/staging/src
# because client-gen doesn't do policy/v1alpha1, we have to skip it too # 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 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[*]}") informergen_external_apis_csv=$(IFS=,; echo "${informergen_external_apis[*]}")