* Update dashboard app to use app SDK v0.35.0 What This change updates dashboard app to use app SDK v0.35.0 and adds new Makefile target for running codegen for all apps, in opt-in manner. Currently only dashboards app is opted in. Additionally, this changes dashboard app Makefile to properly install and update app SDK versions when generating code, with app SDK version pinned in the Makefile itself. Why The upgrade addresses issues with `DeepCopy` methods, while the Makefile targets ensure that codegen is easy to run and uses reproducible environments. Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> * Run make update-workspace Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> * Fix deepcopy methods Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> * Re-run CUE codegen to satisfy the CI Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> * Run make update-workspace Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> * Update to v0.35.1 Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com> --------- Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
56 lines
3.0 KiB
Makefile
56 lines
3.0 KiB
Makefile
APP_SDK_VERSION := v0.35.1
|
|
APP_SDK_DIR := $(shell go env GOPATH)/bin/app-sdk-$(APP_SDK_VERSION)
|
|
APP_SDK_BIN := $(APP_SDK_DIR)/grafana-app-sdk
|
|
|
|
.PHONY: install-app-sdk
|
|
install-app-sdk: $(APP_SDK_BIN) ## Install the Grafana App SDK
|
|
|
|
$(APP_SDK_BIN):
|
|
@echo "Installing Grafana App SDK version $(APP_SDK_VERSION)"
|
|
@mkdir -p $(APP_SDK_DIR)
|
|
# The only way to install specific versions of binaries using `go install`
|
|
# is by setting GOBIN to the directory you want to install the binary to.
|
|
GOBIN=$(APP_SDK_DIR) go install github.com/grafana/grafana-app-sdk/cmd/grafana-app-sdk@$(APP_SDK_VERSION)
|
|
@touch $@
|
|
|
|
.PHONY: update-app-sdk
|
|
update-app-sdk: ## Update the Grafana App SDK dependency in go.mod
|
|
go get github.com/grafana/grafana-app-sdk@$(APP_SDK_VERSION)
|
|
go mod tidy
|
|
|
|
.PHONY: generate
|
|
generate: do-generate post-generate-cleanup ## Run Grafana App SDK code generation
|
|
|
|
.PHONY: do-generate
|
|
do-generate: install-app-sdk update-app-sdk ## Run Grafana App SDK code generation
|
|
@$(APP_SDK_BIN) generate \
|
|
--source=./kinds/ \
|
|
--gogenpath=./pkg/apis \
|
|
--tsgenpath=../../packages/grafana-schema/src/schema \
|
|
--grouping=group \
|
|
--defencoding=none \
|
|
--genoperatorstate=false \
|
|
--noschemasinmanifest
|
|
|
|
.PHONY: post-generate-cleanup
|
|
post-generate-cleanup: ## Clean up the generated code
|
|
# This is a workaround for SDK codegen not producing correct output for v0alpha1
|
|
@rm ../../packages/grafana-schema/src/schema/dashboard/v0alpha1/types.spec.gen.ts
|
|
@cp ./tshack/v0alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v0alpha1/types.spec.gen.ts
|
|
|
|
# Same for v1alpha1
|
|
@rm ../../packages/grafana-schema/src/schema/dashboard/v1alpha1/types.spec.gen.ts
|
|
@cp ./tshack/v1alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v1alpha1/types.spec.gen.ts
|
|
|
|
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v0alpha1.
|
|
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go > ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp
|
|
@sed -e '/\/\/ DeepCopyInto deep copies Spec into another Spec object/,+3d' ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp > ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp2
|
|
@rm ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp
|
|
@mv ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go
|
|
|
|
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v1alpha1.
|
|
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go > ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp
|
|
@sed -e '/\/\/ DeepCopyInto deep copies Spec into another Spec object/,+3d' ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp > ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp2
|
|
@rm ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp
|
|
@mv ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go
|