Files
pulumi-dokploy/Makefile
Max Vojtkov bb3c15135b Bridge terraform-provider-dokploy into a Pulumi provider
18 resources and 5 data sources mapped into the dokploy:index module, with
SDKs generated for TypeScript, Python, Go and .NET.
2026-08-08 15:28:16 +03:00

90 lines
3.0 KiB
Makefile

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}'