18 resources and 5 data sources mapped into the dokploy:index module, with SDKs generated for TypeScript, Python, Go and .NET.
90 lines
3.0 KiB
Makefile
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}'
|