# Paths
PROTO_DIR = proto
GOOGLEAPIS_DIR = googleapis
OUT_DIR = gen

PROTO_FILE = osu_music.proto

# Protoc plugins (assumed in PATH)
PROTOC ?= protoc
PROTOC_GEN_GO ?= protoc-gen-go
PROTOC_GEN_GO_GRPC ?= protoc-gen-go-grpc
PROTOC_GEN_GRPC_GATEWAY ?= protoc-gen-grpc-gateway
PROTOC_GEN_OPENAPIV2 ?= protoc-gen-openapiv2

all: generate

generate:
	cp ../osu_music.proto proto/osu_music.proto

	$(PROTOC) \
		-I $(PROTO_DIR) \
		-I $(GOOGLEAPIS_DIR) \
		--go_out $(OUT_DIR) --go_opt paths=source_relative \
		--go-grpc_out $(OUT_DIR) --go-grpc_opt paths=source_relative \
		--grpc-gateway_out $(OUT_DIR) --grpc-gateway_opt paths=source_relative \
		--openapiv2_out $(OUT_DIR)/swagger \
		$(PROTO_DIR)/$(PROTO_FILE)

clean:
	rm -rf $(OUT_DIR)

.PHONY: all generate clean
