| 
									
										
										
										
											2023-12-06 06:31:49 +08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-26 04:01:09 +08:00
										 |  |  | # SPDX-License-Identifier: AGPL-3.0-only | 
					
						
							|  |  |  | # Provenance-includes-location: https://github.com/kubernetes/sample-apiserver/blob/master/hack/update-codegen.sh | 
					
						
							|  |  |  | # Provenance-includes-license: Apache-2.0 | 
					
						
							|  |  |  | # Provenance-includes-copyright: The Kubernetes Authors. | 
					
						
							| 
									
										
										
										
											2023-12-06 06:31:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | set -o errexit | 
					
						
							|  |  |  | set -o nounset | 
					
						
							|  |  |  | set -o pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. | 
					
						
							| 
									
										
										
										
											2024-08-14 23:06:37 +08:00
										 |  |  | pushd "${SCRIPT_ROOT}/hack" && GO111MODULE=on go mod tidy && popd | 
					
						
							| 
									
										
										
										
											2025-01-06 23:20:35 +08:00
										 |  |  | CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo $(go env GOPATH)/pkg/mod/k8s.io/code-generator@v0.32.0)} | 
					
						
							| 
									
										
										
										
											2023-12-06 06:31:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | OUTDIR="${HOME}/go/src" | 
					
						
							| 
									
										
										
										
											2024-01-26 04:01:09 +08:00
										 |  |  | OPENAPI_VIOLATION_EXCEPTIONS_FILENAME="zz_generated.openapi_violation_exceptions.list" | 
					
						
							| 
									
										
										
										
											2023-12-06 06:31:49 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-26 04:01:09 +08:00
										 |  |  | source "${CODEGEN_PKG}/kube_codegen.sh" | 
					
						
							|  |  |  | source "$(dirname "${BASH_SOURCE[0]}")/openapi-codegen.sh" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  | selected_pkg="${1-}" | 
					
						
							| 
									
										
										
										
											2024-01-26 04:01:09 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  | grafana::codegen:run() { | 
					
						
							|  |  |  |   local generate_root=$1 | 
					
						
							|  |  |  |   local skipped="true" | 
					
						
							|  |  |  |   for api_pkg in $(grafana:codegen:lsdirs ./${generate_root}/apis); do | 
					
						
							|  |  |  |     if [[ "${selected_pkg}" != "" && ${api_pkg} != $selected_pkg ]]; then | 
					
						
							|  |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2024-03-09 00:12:59 +08:00
										 |  |  |     echo "Generating code for ${generate_root}/apis/${api_pkg}..." | 
					
						
							|  |  |  |     echo "=============================================" | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  |     skipped="false" | 
					
						
							|  |  |  |     include_common_input_dirs=$([[ ${api_pkg} == "common" ]] && echo "true" || echo "false") | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     kube::codegen::gen_helpers \
 | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  |       --boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \
 | 
					
						
							| 
									
										
										
										
											2025-04-18 22:14:52 +08:00
										 |  |  |       ${generate_root}/apis/${api_pkg} | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  |    for pkg_version in $(grafana:codegen:lsdirs ./${generate_root}/apis/${api_pkg}); do | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  |       grafana::codegen::gen_openapi \
 | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  |         --input-pkg-single ${generate_root}/apis/${api_pkg}/${pkg_version} \
 | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  |         --output-base "${OUTDIR}" \
 | 
					
						
							|  |  |  |         --report-filename "${OPENAPI_VIOLATION_EXCEPTIONS_FILENAME}" \
 | 
					
						
							|  |  |  |         --update-report \
 | 
					
						
							|  |  |  |         --boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \
 | 
					
						
							|  |  |  |         --include-common-input-dirs ${include_common_input_dirs} | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  |       violations_file="${generate_root}/apis/${api_pkg}/${pkg_version}/${OPENAPI_VIOLATION_EXCEPTIONS_FILENAME}" | 
					
						
							|  |  |  |       if [ ! -f "${violations_file}" ]; then | 
					
						
							|  |  |  |           continue | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  |       # delete violation exceptions file, if empty | 
					
						
							|  |  |  |       if ! grep -q . "${violations_file}"; then | 
					
						
							|  |  |  |           echo "Deleting ${violations_file} since it is empty" | 
					
						
							|  |  |  |           rm ${violations_file} | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |       echo "" | 
					
						
							|  |  |  |     done | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  |   done | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   if [[ "${skipped}" == "true" ]]; then | 
					
						
							|  |  |  |     echo "no apis matching ${selected_pkg}. skipping..." | 
					
						
							|  |  |  |     echo | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Generating client code..." | 
					
						
							|  |  |  |   echo "-------------------------" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   kube::codegen::gen_client \
 | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  |     --with-watch \
 | 
					
						
							|  |  |  |     --with-applyconfig \
 | 
					
						
							|  |  |  |     --output-dir ${generate_root}/generated \
 | 
					
						
							|  |  |  |     --output-pkg github.com/grafana/grafana/${generate_root}/generated \
 | 
					
						
							|  |  |  |     --boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \
 | 
					
						
							|  |  |  |     ${generate_root}/apis | 
					
						
							| 
									
										
										
										
											2024-02-24 08:36:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | grafana:codegen:lsdirs() { | 
					
						
							|  |  |  |   ls -d $1/*/ | xargs basename -a | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | grafana::codegen:run pkg | 
					
						
							|  |  |  | grafana::codegen:run pkg/apimachinery | 
					
						
							| 
									
										
										
										
											2024-08-14 13:17:05 +08:00
										 |  |  | grafana::codegen:run pkg/aggregator | 
					
						
							| 
									
										
										
										
											2025-03-13 17:05:01 +08:00
										 |  |  | grafana::codegen:run apps/dashboard/pkg | 
					
						
							| 
									
										
										
										
											2025-04-15 04:20:10 +08:00
										 |  |  | grafana::codegen:run apps/folder/pkg | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-20 23:11:16 +08:00
										 |  |  | if [ -d "pkg/extensions/apis" ]; then | 
					
						
							|  |  |  |   grafana::codegen:run pkg/extensions | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 01:27:03 +08:00
										 |  |  | echo "done." |