PACK := dokploy ORG := maxvojtkov PROJECT := github.com/$(ORG)/pulumi-$(PACK) PROVIDER_PATH := provider VERSION_PATH := $(PROVIDER_PATH)/pkg/version.Version TFGEN := pulumi-tfgen-$(PACK) PROVIDER := pulumi-resource-$(PACK) WORKING_DIR := $(shell pwd) SCHEMA_DIR := $(WORKING_DIR)/provider/cmd/$(PROVIDER) # Override on the command line for a release build, e.g. `make build VERSION=0.2.0`. VERSION ?= 0.1.0 LDFLAGS := -X $(PROJECT)/$(VERSION_PATH)=$(VERSION) JAVASCRIPT_PKG := @$(ORG)/pulumi-$(PACK) PYTHON_PKG := pulumi_$(PACK) .PHONY: default default: provider build_sdks ## Build the provider plugin and all SDKs # ---------------------------------------------------------------- code gen --- .PHONY: tfgen tfgen: ## Regenerate schema.json and bridge-metadata.json (cd provider && go build -o $(WORKING_DIR)/bin/$(TFGEN) -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(TFGEN)) $(WORKING_DIR)/bin/$(TFGEN) schema --out $(SCHEMA_DIR) .PHONY: provider provider: tfgen ## Build the provider plugin binary into bin/ (cd provider && go build -o $(WORKING_DIR)/bin/$(PROVIDER) -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(PROVIDER)) .PHONY: build_sdks build_sdks: build_nodejs build_python build_go build_dotnet ## Generate every language SDK # sdk/nodejs/bin is what gets published to npm, so package.json and the docs # have to be copied in next to the compiled JavaScript. .PHONY: build_nodejs build_nodejs: tfgen rm -rf sdk/nodejs $(WORKING_DIR)/bin/$(TFGEN) nodejs --out sdk/nodejs/ cd sdk/nodejs && npm install && npm run build cp README.md LICENSE sdk/nodejs/package.json sdk/nodejs/bin/ .PHONY: build_python build_python: tfgen rm -rf sdk/python $(WORKING_DIR)/bin/$(TFGEN) python --out sdk/python/ cp README.md LICENSE sdk/python/ .PHONY: build_go build_go: tfgen rm -rf sdk/go $(WORKING_DIR)/bin/$(TFGEN) go --out sdk/go/ .PHONY: build_dotnet build_dotnet: tfgen rm -rf sdk/dotnet $(WORKING_DIR)/bin/$(TFGEN) dotnet --out sdk/dotnet/ cp README.md LICENSE sdk/dotnet/ printf "$(VERSION)" > sdk/dotnet/version.txt # ------------------------------------------------------------------ local ---- .PHONY: install install: provider install_nodejs_sdk ## Install the plugin locally so `pulumi up` can find it pulumi plugin install resource $(PACK) $(VERSION) --file $(WORKING_DIR)/bin/$(PROVIDER) --reinstall .PHONY: install_nodejs_sdk install_nodejs_sdk: @if [ -d sdk/nodejs/bin ]; then yarn link --cwd sdk/nodejs/bin; fi .PHONY: lint lint: ## Vet and format-check the provider sources cd provider && go vet ./... && test -z "$$(gofmt -l .)" .PHONY: test test: ## Run provider unit tests cd provider && go test ./... -count=1 .PHONY: clean clean: ## Remove build artifacts and generated SDKs rm -rf bin sdk/nodejs sdk/python sdk/go sdk/dotnet .PHONY: help help: @grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \ | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'