oapi-codegen icon indicating copy to clipboard operation
oapi-codegen copied to clipboard

Different package for server and types

Open caevv opened this issue 4 years ago • 4 comments

Suggestion to allow different packages per generator

oapi-codegen -generate types,server api/openapi.yaml -o types=internal/api/models/models.go -o server=internal/api/server/server.go

caevv avatar Feb 23 '21 19:02 caevv

This would benefit me as well.

omadawn avatar Jul 09 '21 15:07 omadawn

You can achieve that using the import-mapping flag. We've done it like this in our Makefile

OAPI_SCHEMA_FILE := openapi/api.yaml
OAPI_COMMON_SCHEMA_FILE := openapi/types.yaml
OAPI_GENERATED_DIR := pkg/openapi/generated
OAPI_CODEGEN := ~/go/bin/oapi-codegen

oapi: ## build oapi
		mkdir -pv $(OAPI_GENERATED_DIR)/{types,public}

		$(OAPI_CODEGEN) -generate 'types,skip-prune,spec' \
 		-package 'types' $(OAPI_COMMON_SCHEMA_FILE) > $(OAPI_GENERATED_DIR)/types/types.gen.go

		$(OAPI_CODEGEN) -generate 'types,server,spec' -import-mapping=./types.yaml:github.com/org/repo/v2/pkg/openapi/generated/types\
		-package 'public' $(OAPI_SCHEMA_FILE) > $(OAPI_GENERATED_DIR)/public/api.gen.go

matelang avatar Jul 23 '21 07:07 matelang

This is now possible. An example is provided in one of the original PRs for this: https://github.com/deepmap/oapi-codegen/pull/389#issuecomment-1243080859

pitmullerIngka avatar Nov 23 '22 10:11 pitmullerIngka

the example uses an alias of . but when I try to use anything but the dot alias it doesn't work (it doesn't even put the import in the generated code anymore) Perhaps it doesn't support anything else yet.

clintberry avatar Jan 29 '24 16:01 clintberry