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.
This commit is contained in:
89
Makefile
Normal file
89
Makefile
Normal file
@@ -0,0 +1,89 @@
|
||||
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}'
|
||||
Reference in New Issue
Block a user