@@ -192,10 +192,42 @@ gen_repo_fields:
192192docker_gen_swag :
193193 $(DOCKER ) run -v $(shell pwd) :/universe --rm $(DMS_GO_COMPILER_IMAGE ) sh -c " cd /universe &&make gen_swag"
194194
195- gen_swag :
195+ gen_swag : check_swag_version
196196 ./internal/apiserver/cmd/swag/swagger_${HOST_OS} _${HOST_ARCH} generate spec -m -w ./internal/apiserver/cmd/server/ -o ./api/swagger.yaml
197197 ./internal/apiserver/cmd/swag/swagger_${HOST_OS} _${HOST_ARCH} generate spec -i ./api/swagger.yaml -o ./api/swagger.json
198198
199+ check_swag_version :
200+ @SWAG_BIN=./internal/apiserver/cmd/swag/swagger_${HOST_OS} _${HOST_ARCH} ; \
201+ SWAG_VER=$$($$SWAG_BIN version | grep 'version:' | awk '{print $$2}' ) ; \
202+ MATCHING_GO_VER=" unknown" ; \
203+ MAPPINGS=" v0.33.1:1.24.0 v0.31.0:1.22 v0.30.4:1.19 v0.29.0:1.18" ; \
204+ for m in $$ MAPPINGS; do \
205+ v=$$ {m%%:* }; g=$$ {m#* :}; \
206+ if [ " $$ v" = " $$ SWAG_VER" ]; then MATCHING_GO_VER=" $$ g" ; break ; fi ; \
207+ done ; \
208+ if [ " $$ MATCHING_GO_VER" = " unknown" ]; then \
209+ echo " Fetching Go version for $$ SWAG_VER from GitHub..." ; \
210+ MATCHING_GO_VER=$$(curl -sL --connect-timeout 2 https://raw.githubusercontent.com/go-swagger/go-swagger/$$SWAG_VER/go.mod | grep "^go " | awk '{print $$2}' 2>/dev/null ) ; \
211+ if [ -z " $$ MATCHING_GO_VER" ]; then MATCHING_GO_VER=" unknown" ; fi ; \
212+ fi ; \
213+ PROJECT_GO_VER=$$(grep "^go " go.mod | awk '{print $$2}' ) ; \
214+ SYSTEM_GO_VER=$$(go version | awk '{print $$3}' | sed 's/go//' ) ; \
215+ echo " Project go.mod Version: $$ PROJECT_GO_VER" ; \
216+ echo " Swagger Version: $$ SWAG_VER (Expected Go: $$ MATCHING_GO_VER)" ; \
217+ echo " System Go Version: $$ SYSTEM_GO_VER" ; \
218+ if [ " $$ MATCHING_GO_VER" != " unknown" ]; then \
219+ PROJECT_GO_MAJOR=$$(echo $$PROJECT_GO_VER | cut -d. -f1,2 ) ; \
220+ MATCH_GO_VER_MAJOR=$$(echo $$MATCHING_GO_VER | cut -d. -f1,2 ) ; \
221+ SYSTEM_GO_MAJOR=$$(echo $$SYSTEM_GO_VER | cut -d. -f1,2 ) ; \
222+ if [ " $$ PROJECT_GO_MAJOR" != " $$ MATCH_GO_VER_MAJOR" ]; then \
223+ echo " Warning: Current Swagger generator ($$ SWAG_VER, Go $$ MATCHING_GO_VER) does not match project's go.mod ($$ PROJECT_GO_VER)." ; \
224+ echo " Please update the Swagger generator to match the project Go version." ; \
225+ fi ; \
226+ if [ " $$ PROJECT_GO_MAJOR" != " $$ SYSTEM_GO_MAJOR" ]; then \
227+ echo " Warning: Your system Go version ($$ SYSTEM_GO_VER) does not match project's go.mod ($$ PROJECT_GO_VER)." ; \
228+ fi ; \
229+ fi
230+
199231open_swag_server :
200232 ./internal/apiserver/cmd/swag/swagger_${HOST_OS} _${HOST_ARCH} serve --no-open -F=swagger --port 36666 ./api/swagger.yaml
201233
0 commit comments