mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 09:21:39 +00:00
101 lines
4.1 KiB
Makefile
101 lines
4.1 KiB
Makefile
#!/usr/bin/make -f
|
|
|
|
# Docker configuration
|
|
DOCKER := $(shell which docker)
|
|
CURRENT_UID := $(shell id -u)
|
|
CURRENT_GID := $(shell id -g)
|
|
|
|
# Proto builder configuration
|
|
protoVer=0.13.2
|
|
protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer)
|
|
protoImage="$(DOCKER)" run -e BUF_CACHE_DIR=/tmp/buf --rm -v "$(GIT_ROOT)":/workspace:rw --user ${CURRENT_UID}:${CURRENT_GID} --workdir /workspace $(protoImageName)
|
|
|
|
# Spawn configuration
|
|
spawnImage="$(DOCKER)" run --rm -v "$(GIT_ROOT)":/workspace:rw --user ${CURRENT_UID}:${CURRENT_GID} --workdir /workspace -e HOME=/workspace onsonr/spawn:latest
|
|
|
|
# Git configuration
|
|
HTTPS_GIT := github.com/sonr-io/sonr.git
|
|
GIT_ROOT := $(shell git rev-parse --show-toplevel)
|
|
|
|
###############################################################################
|
|
### Default Target ###
|
|
###############################################################################
|
|
.DEFAULT_GOAL := help
|
|
|
|
all: build gen swagger-gen push
|
|
|
|
proto: gen
|
|
generate: gen
|
|
|
|
###############################################################################
|
|
### Code Generation ###
|
|
###############################################################################
|
|
build:
|
|
@gum log --level info "Building Protobuf files"
|
|
@npx buf build
|
|
|
|
gen:
|
|
@go install cosmossdk.io/orm/cmd/protoc-gen-go-cosmos-orm@v1.0.0-beta.3
|
|
@gum log --level info "Generating Protobuf files"
|
|
@$(protoImage) sh /workspace/scripts/protocgen.sh
|
|
@gum log --level info "Generating stubs with spawn..."
|
|
@$(spawnImage) spawn stub-gen
|
|
@cd $(GIT_ROOT) && go mod tidy
|
|
|
|
###############################################################################
|
|
### Linting ###
|
|
###############################################################################
|
|
lint:
|
|
@$(protoImage) buf lint --error-format=json
|
|
test:
|
|
@$(protoImage) buf breaking --against $(HTTPS_GIT)#branch=main
|
|
|
|
###############################################################################
|
|
### Documentation ###
|
|
###############################################################################
|
|
swagger-gen:
|
|
@gum log --level info "Generating OpenAPI documentation..."
|
|
@$(protoImage) buf generate --template proto/buf.gen.openapi.yaml
|
|
@gum log --level info "Combining swagger files into unified specification..."
|
|
@mkdir -p $(GIT_ROOT)/client/docs/swagger-ui
|
|
@npx swagger-combine $(GIT_ROOT)/client/docs/config.json \
|
|
-o $(GIT_ROOT)/client/docs/swagger-ui/swagger.yaml \
|
|
-f yaml \
|
|
--continueOnConflictingPaths true \
|
|
--includeDefinitions true
|
|
@gum log --level info "Cleaning up temporary files..."
|
|
@rm -rf $(GIT_ROOT)/tmp-swagger-gen
|
|
@gum log --level info "✅ OpenAPI documentation generated successfully"
|
|
@gum log --level info "✅ Unified API specification: client/docs/swagger-ui/swagger.yaml"
|
|
|
|
push:
|
|
@npx buf push
|
|
|
|
release:
|
|
@gum log --level info "Releasing Protobuf files"
|
|
@npx buf build
|
|
@npx buf push
|
|
|
|
###############################################################################
|
|
### Help ###
|
|
###############################################################################
|
|
help:
|
|
@gum log --level info "Sonr Protocol Buffer Management"
|
|
@gum log --level info ""
|
|
@gum log --level info "Usage: make [target]"
|
|
@gum log --level info ""
|
|
@gum log --level info "Available targets:"
|
|
@gum log --level info ""
|
|
@gum log --level info " all Run lint, gen, and swagger-gen targets"
|
|
@gum log --level info " gen Generate protobuf code and stubs"
|
|
@gum log --level info " lint Lint protobuf files"
|
|
@gum log --level info " check-breaking Check for breaking changes against main branch"
|
|
@gum log --level info " swagger-gen Generate OpenAPI documentation"
|
|
@gum log --level info " help Show this help message"
|
|
@gum log --level info ""
|
|
@gum log --level info "Environment:"
|
|
@gum log --level info " Proto builder: $(protoImageName)"
|
|
@gum log --level info " Spawn: onsonr/spawn:latest"
|
|
|
|
.PHONY: all gen lint check-breaking swagger-gen help
|