1
0
Fork 0
forked from lthn/blockchain
blockchain/utils/sdk/Makefile

67 lines
3 KiB
Makefile
Raw Permalink Normal View History

PACKAGE_VERSION?=6.0.1
BASE_DIR:=$(CURDIR)
# Default build directory. Can be overridden from the parent Makefile.
# e.g., `make sdk BUILD_DIR=client` will output to the `client/` directory.
BUILD_DIR?=$(BASE_DIR)/../../build/packages
SDK_TARGETS := $(patsubst packages/%.json,%,$(wildcard packages/*.json))
# --- Target-Specific Hooks ---
# Define pre- and post-build steps for specific languages.
# By default, these hooks are empty.
PRE_BUILD_HOOK = @true
POST_BUILD_HOOK = @true
# For the 'go' target, create an ignore file to prevent unwanted files from being generated.
go: PRE_BUILD_HOOK = @echo "--> Creating .openapi-generator-ignore file for Go client"; \
echo "go.sum" >> $(BUILD_DIR)/go/.openapi-generator-ignore
# For the 'go' target, define specific post-build steps.
go: POST_BUILD_HOOK = @echo "--> Setting Go module path..."; \
echo "--> Fixing import paths in generated Go files..."; \
find "$(BUILD_DIR)/go" -type f -name '*.go' -exec sed -i '' 's|github.com/letheanVPN/blockchain/lthn|github.com/letheanVPN/blockchain/utils/sdk/client/go|g' {} +; \
find "$(BUILD_DIR)/go" -type f -name '*.md' -exec sed -i '' 's|github.com/letheanVPN/blockchain/lthn|github.com/letheanVPN/blockchain/utils/sdk/client/go|g' {} +; \
echo "--> Tidying Go module...";(cd $(BUILD_DIR)/go && go mod edit -module github.com/letheanVPN/blockchain/utils/sdk/client/go && go mod tidy)
# For the 'go' target, set the generator name correctly.
go: GENERATOR_NAME=go
php: GENERATOR_NAME=php-nextgen
angular: GENERATOR_NAME=typescript-angular
# --- Main Targets ---
all: build
build: $(SDK_TARGETS)
@echo "All SDKs have been processed."
# Rule to build each SDK package using OpenAPI Generator.
# It reads the corresponding JSON config file and generates the SDK in the build directory.
$(SDK_TARGETS): %: packages/%.json
# Default generator name is the target name itself.
$(eval GENERATOR_NAME = $@)
rm -rf "$(BUILD_DIR)/$@"
# Ensure the output directory exists, cross-platform.
@cmake -E make_directory "$(BUILD_DIR)/$@"
@echo "--> Creating .openapi-generator-ignore file"
@echo "git_push.sh" > "$(BUILD_DIR)/$@/.openapi-generator-ignore"
@echo ".travis.yml" >> "$(BUILD_DIR)/$@/.openapi-generator-ignore"
@echo "README.md" >> "$(BUILD_DIR)/$@/.openapi-generator-ignore"
@echo "--- Building package $@ with version $(PACKAGE_VERSION) ---"
# Run pre-build hook
$(PRE_BUILD_HOOK)
export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write" && \
openapi-generator generate --minimal-update --git-host "github.com" --git-repo-id "blockchain" --git-user-id "letheanVPN" \
-i "$(BASE_DIR)/spec/oas-3.0.0.json" \
-p 'developerEmail=support@lt.hn,developerName=Lethean Community,developerOrganization=lethean,developerOrganizationUrl=https://lt.hn' \
-p "packageName=lthn,licenseName=EUPL-1.2" \
-g "$(GENERATOR_NAME)" \
-o "$(BUILD_DIR)/$@" \
-c "$<" \
--artifact-version "$(PACKAGE_VERSION)"
# Run post-build hook
$(POST_BUILD_HOOK)
# Phony targets to avoid conflicts with file names and to ensure they always run.
.PHONY: all build $(SDK_TARGETS)