|
96 | 96 | endif |
97 | 97 | endif |
98 | 98 |
|
99 | | -LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)" |
| 99 | +# SemVer |
| 100 | +FORGEJO_VERSION := v2.0.0 |
| 101 | + |
| 102 | +LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)" -X "code.gitea.io/gitea/routers/api/forgejo/v1.ForgejoVersion=$(FORGEJO_VERSION)" |
100 | 103 |
|
101 | 104 | LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64 |
102 | 105 |
|
@@ -147,6 +150,8 @@ ifdef DEPS_PLAYWRIGHT |
147 | 150 | PLAYWRIGHT_FLAGS += --with-deps |
148 | 151 | endif |
149 | 152 |
|
| 153 | +FORGEJO_API_SPEC := public/forgejo/api.v1.yml |
| 154 | + |
150 | 155 | SWAGGER_SPEC := templates/swagger/v1_json.tmpl |
151 | 156 | SWAGGER_SPEC_S_TMPL := s|"basePath": *"/api/v1"|"basePath": "{{AppSubUrl \| JSEscape \| Safe}}/api/v1"|g |
152 | 157 | SWAGGER_SPEC_S_JSON := s|"basePath": *"{{AppSubUrl \| JSEscape \| Safe}}/api/v1"|"basePath": "/api/v1"|g |
@@ -207,6 +212,8 @@ help: |
207 | 212 | @echo " - generate-license update license files" |
208 | 213 | @echo " - generate-gitignore update gitignore files" |
209 | 214 | @echo " - generate-manpage generate manpage" |
| 215 | + @echo " - generate-forgejo-api generate the forgejo API from spec" |
| 216 | + @echo " - forgejo-api-validate check if the forgejo API matches the specs" |
210 | 217 | @echo " - generate-swagger generate the swagger spec from code comments" |
211 | 218 | @echo " - swagger-validate check if the swagger spec is valid" |
212 | 219 | @echo " - golangci-lint run golangci-lint linter" |
@@ -296,6 +303,27 @@ ifneq "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)" |
296 | 303 | TAGS_PREREQ := $(TAGS_EVIDENCE) |
297 | 304 | endif |
298 | 305 |
|
| 306 | +OAPI_CODEGEN_PACKAGE ?= github.com/deepmap/oapi-codegen/cmd/ [email protected] |
| 307 | +KIN_OPENAPI_CODEGEN_PACKAGE ?= github.com/getkin/kin-openapi/cmd/ [email protected] |
| 308 | +FORGEJO_API_SERVER = routers/api/forgejo/v1/generated.go |
| 309 | + |
| 310 | +.PHONY: generate-forgejo-api |
| 311 | +generate-forgejo-api: $(FORGEJO_API_SPEC) |
| 312 | + $(GO) run $(OAPI_CODEGEN_PACKAGE) -package v1 -generate chi-server,types $< > $(FORGEJO_API_SERVER) |
| 313 | + |
| 314 | +.PHONY: forgejo-api-check |
| 315 | +forgejo-api-check: generate-forgejo-api |
| 316 | + @diff=$$(git diff $(FORGEJO_API_SERVER) ; \ |
| 317 | + if [ -n "$$diff" ]; then \ |
| 318 | + echo "Please run 'make generate-forgejo-api' and commit the result:"; \ |
| 319 | + echo "$${diff}"; \ |
| 320 | + exit 1; \ |
| 321 | + fi |
| 322 | + |
| 323 | +.PHONY: forgejo-api-validate |
| 324 | +forgejo-api-validate: |
| 325 | + $(GO) run $(KIN_OPENAPI_CODEGEN_PACKAGE) $(FORGEJO_API_SPEC) |
| 326 | + |
299 | 327 | .PHONY: generate-swagger |
300 | 328 | generate-swagger: $(SWAGGER_SPEC) |
301 | 329 |
|
@@ -331,7 +359,7 @@ checks: checks-frontend checks-backend |
331 | 359 | checks-frontend: lockfile-check svg-check |
332 | 360 |
|
333 | 361 | .PHONY: checks-backend |
334 | | -checks-backend: tidy-check swagger-check fmt-check misspell-check swagger-validate |
| 362 | +checks-backend: tidy-check swagger-check fmt-check misspell-check forgejo-api-validate swagger-validate |
335 | 363 |
|
336 | 364 | .PHONY: lint |
337 | 365 | lint: lint-frontend lint-backend |
|
0 commit comments