include validate.mk ################################################## # Main targets ################################################## MM_SHELL ?= bash -c .PHONY: all test_all_quickstarts all: install_mm validat # Run all tests at once test_all_quickstarts: test_go_quickstarts test_python_quickstarts test_csharp_quickstarts test_java_quickstarts test_javascript_quickstarts @echo "All quickstart tests complete!" ################################################## # Version update targets ################################################## # Update Go SDK version in all quickstarts # Usage: make update_gosdk_version VERSION=v1.13.0-rc.1 .PHONY: update_gosdk_version update_gosdk_version: @if [ -z "$(VERSION)" ]; then \ echo "Error: VERSION parameter is required. Usage: make update_gosdk_version VERSION=v1.13.0-rc.1"; \ exit 1; \ fi @if ! [[ "$(VERSION)" == v* ]]; then \ echo "Error: Go SDK VERSION must start with 'v' (e.g., v1.13.0)"; \ exit 1; \ fi @echo "Updating go-sdk to version $(VERSION) in all SDK variant quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ if [ -d "$$building_block/go/sdk" ]; then \ echo "Checking $$building_block/go/sdk for go.mod"; \ if [ -f "$$building_block/go/sdk/go.mod" ]; then \ echo "Updating $$building_block/go/sdk to go-sdk $(VERSION)"; \ (cd "$$building_block/go/sdk" && \ grep -q "github.com/dapr/go-sdk" go.mod && \ go get github.com/dapr/go-sdk@$(VERSION) && \ go mod tidy) || \ echo "Failed to update go-sdk in $$building_block/go/sdk"; \ else \ echo "No go.mod file found in $$building_block/go/sdk"; \ echo "Looking for nested Go projects..."; \ NESTED_GO_MODS=$$(find "$$building_block/go/sdk" -name "go.mod" -type f); \ if [ -n "$$NESTED_GO_MODS" ]; then \ for GO_MOD in $$NESTED_GO_MODS; do \ NESTED_DIR=$$(dirname "$$GO_MOD"); \ echo "Found Go project at $$NESTED_DIR"; \ echo "Updating to go-sdk $(VERSION)"; \ (cd "$$NESTED_DIR" && \ grep -q "github.com/dapr/go-sdk" go.mod && \ go get github.com/dapr/go-sdk@$(VERSION) && \ go mod tidy) || \ echo "Failed to update go-sdk in $$NESTED_DIR"; \ done; \ else \ echo "No Go projects found in $$building_block/go/sdk"; \ fi; \ fi; \ fi; \ done @echo "go-sdk update complete! Please verify changes and run tests before committing." # Update Python SDK version in all quickstarts # Usage: make update_python_sdk_version [DAPR_VERSION=1.16.0] [FASTAPI_VERSION=1.16.0] [WORKFLOW_VERSION=1.16.0] .PHONY: update_python_sdk_version update_python_sdk_version: @echo "Updating Python dependencies in all quickstarts..." @find . -path '*/python/*' -name "requirements.txt" | while read -r REQ_FILE; do \ echo "Processing: $$REQ_FILE"; \ PROJECT_DIR=$$(dirname "$$REQ_FILE"); \ if [ -n "$(DAPR_VERSION)" ] && grep -q "dapr>=" "$$REQ_FILE"; then \ echo " Updating dapr package to $(DAPR_VERSION)"; \ sed -i.bak "s/dapr>=.*$$/dapr>=$(DAPR_VERSION)/g" "$$REQ_FILE" && rm -f "$$REQ_FILE.bak" || \ echo " Failed to update dapr in $$REQ_FILE"; \ fi; \ if [ -n "$(FASTAPI_VERSION)" ] && grep -q "dapr-ext-fastapi>=" "$$REQ_FILE"; then \ echo " Updating dapr-ext-fastapi to $(FASTAPI_VERSION)"; \ sed -i.bak "s/dapr-ext-fastapi>=.*$$/dapr-ext-fastapi>=$(FASTAPI_VERSION)/g" "$$REQ_FILE" && rm -f "$$REQ_FILE.bak" || \ echo " Failed to update dapr-ext-fastapi in $$REQ_FILE"; \ fi; \ if [ -n "$(WORKFLOW_VERSION)" ] && grep -q "dapr-ext-workflow>=" "$$REQ_FILE"; then \ echo " Updating dapr-ext-workflow to $(WORKFLOW_VERSION)"; \ sed -i.bak "s/dapr-ext-workflow>=.*$$/dapr-ext-workflow>=$(WORKFLOW_VERSION)/g" "$$REQ_FILE" && rm -f "$$REQ_FILE.bak" || \ echo " Failed to update dapr-ext-workflow in $$REQ_FILE"; \ fi; \ done @echo "Python dependency update complete! Please verify changes and run tests before committing." # Update .NET SDK version in all C# quickstarts # Usage: make update_dotnet_sdk_version VERSION=1.15.0 .PHONY: update_dotnet_sdk_version update_dotnet_sdk_version: @if [ -z "$(VERSION)" ]; then \ echo "Error: VERSION parameter is required. Usage: make update_dotnet_sdk_version VERSION=1.16.0-rc01"; \ exit 1; \ fi @echo "Updating Dapr packages to version $(VERSION) in all C# projects..." @# Process standard SDK quickstarts @echo "Processing SDK quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ if [ -d "$$building_block/csharp/sdk" ]; then \ echo "Checking $$building_block/csharp/sdk for .csproj files"; \ CSPROJ_FILES=$$(find "$$building_block/csharp/sdk" -name "*.csproj"); \ if [ -n "$$CSPROJ_FILES" ]; then \ for CSPROJ in $$CSPROJ_FILES; do \ echo "Processing: $$CSPROJ"; \ PROJ_DIR=$$(dirname "$$CSPROJ"); \ DAPR_LINES=$$(grep -A1 "PackageReference Include=\"Dapr." "$$CSPROJ" || echo ""); \ if [ -n "$$DAPR_LINES" ]; then \ echo "$$DAPR_LINES" | grep "Include=\"Dapr." | while read -r LINE; do \ PACKAGE=$$(echo $$LINE | sed 's/.*Include="\([^"]*\)".*/\1/'); \ echo " Updating $$PACKAGE to version $(VERSION)"; \ (cd "$$PROJ_DIR" && dotnet add "$$(basename $$CSPROJ)" package "$$PACKAGE" --version $(VERSION)) || \ echo " Failed to update $$PACKAGE in $$CSPROJ"; \ done; \ else \ echo " No Dapr package references found in $$CSPROJ"; \ fi; \ done; \ else \ echo "No .csproj files found in $$building_block/csharp/sdk"; \ fi; \ fi; \ done @# Process tutorials directory separately @echo "Processing tutorials directory..." @if [ -d "./tutorials" ]; then \ echo "Searching tutorials for .csproj files with Dapr references..."; \ TUTORIAL_CSPROJ_FILES=$$(find "./tutorials" -name "*.csproj"); \ if [ -n "$$TUTORIAL_CSPROJ_FILES" ]; then \ for CSPROJ in $$TUTORIAL_CSPROJ_FILES; do \ echo "Processing tutorial: $$CSPROJ"; \ PROJ_DIR=$$(dirname "$$CSPROJ"); \ DAPR_LINES=$$(grep -A1 "PackageReference Include=\"Dapr." "$$CSPROJ" || echo ""); \ if [ -n "$$DAPR_LINES" ]; then \ echo "$$DAPR_LINES" | grep "Include=\"Dapr." | while read -r LINE; do \ PACKAGE=$$(echo $$LINE | sed 's/.*Include="\([^"]*\)".*/\1/'); \ echo " Updating $$PACKAGE to version $(VERSION)"; \ (cd "$$PROJ_DIR" && dotnet add "$$(basename $$CSPROJ)" package "$$PACKAGE" --version $(VERSION)) || \ echo " Failed to update $$PACKAGE in $$CSPROJ"; \ done; \ else \ echo " No Dapr package references found in $$CSPROJ"; \ fi; \ done; \ else \ echo "No .csproj files found in tutorials directory"; \ fi; \ else \ echo "No tutorials directory found"; \ fi @echo "C# Dapr package update complete! Please verify changes and run tests before committing." # Update JavaScript SDK version in all quickstarts # Usage: make update_javascript_sdk_version VERSION=3.4.0 .PHONY: update_javascript_sdk_version update_javascript_sdk_version: @if [ -z "$(VERSION)" ]; then \ echo "Error: VERSION parameter is required. Usage: make update_javascript_sdk_version VERSION=3.4.0"; \ exit 1; \ fi @echo "Updating @dapr/dapr to version $(VERSION) in all JavaScript SDK quickstarts..." @for dir in $$(find . -path "*/javascript/sdk" -type d); do \ echo "Checking $$dir for package.json files"; \ if [ -f "$$dir/package.json" ]; then \ if grep -q "@dapr/dapr" "$$dir/package.json"; then \ echo " Updating @dapr/dapr to version $(VERSION) in $$dir"; \ (cd "$$dir" && npm install @dapr/dapr@$(VERSION) --save) || \ echo " Failed to update @dapr/dapr in $$dir/package.json"; \ else \ echo " No @dapr/dapr package found in $$dir/package.json"; \ fi; \ else \ echo " No package.json found in $$dir"; \ for subdir in $$(find "$$dir" -maxdepth 2 -type d | grep -v node_modules); do \ if [ -f "$$subdir/package.json" ]; then \ if grep -q "@dapr/dapr" "$$subdir/package.json"; then \ echo " Updating @dapr/dapr to version $(VERSION) in $$subdir"; \ (cd "$$subdir" && npm install @dapr/dapr@$(VERSION) --save) || \ echo " Failed to update @dapr/dapr in $$subdir/package.json"; \ fi; \ fi; \ done; \ fi; \ done @echo "JavaScript Dapr package update complete! Please verify changes and run tests before committing." # Update Java SDK version in all quickstarts # Usage: make update_java_sdk_version VERSION=1.12.0 .PHONY: update_java_sdk_version update_java_sdk_version: @if [ -z "$(VERSION)" ]; then \ echo "Error: VERSION parameter is required. Usage: make update_java_sdk_version VERSION=1.12.0"; \ exit 1; \ fi @echo "Updating Dapr packages to version $(VERSION) in all Java projects..." @# Process standard SDK quickstarts @echo "Processing SDK quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ if [ -d "$$building_block/java/sdk" ]; then \ echo "Checking $$building_block/java/sdk for pom.xml files"; \ POM_FILES=$$(find "$$building_block/java/sdk" -name "pom.xml"); \ if [ -n "$$POM_FILES" ]; then \ for POM in $$POM_FILES; do \ POM_DIR=$$(dirname "$$POM"); \ echo "Processing: $$POM"; \ if grep -q "io.dapr" "$$POM"; then \ echo " Found io.dapr dependency in $$POM"; \ echo " Updating to version $(VERSION)"; \ (cd "$$POM_DIR" && mvn versions:use-dep-version -Dincludes=io.dapr:dapr-sdk -DdepVersion=$(VERSION) -DgenerateBackupPoms=false -q) || \ echo " Failed to update io.dapr:dapr-sdk in $$POM"; \ echo " Updated dependency: "; \ grep -A2 "io.dapr" "$$POM"; \ else \ echo " No io.dapr dependency found in $$POM"; \ fi; \ done; \ else \ echo "No pom.xml files found in $$building_block/java/sdk"; \ fi; \ fi; \ done @echo "Java SDK update complete! Please verify changes and run tests before committing." ################################################## # Testing targets ################################################## # Test Go quickstarts .PHONY: test_go_quickstarts test_go_quickstarts: @echo "Testing all Go quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ for variant in "http" "sdk"; do \ if [ ! -d "$$building_block/go/$$variant" ]; then \ echo "$$building_block/go/$$variant does not exist."; \ else \ echo "Validating $$building_block/go/$$variant quickstart"; \ (cd $$building_block/go/$$variant && make validate) || echo "Validation failed for $$building_block/go/$$variant"; \ fi; \ done; \ done @echo "Go quickstart testing complete!" # Test Python quickstarts .PHONY: test_python_quickstarts test_python_quickstarts: @echo "Testing all Python quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ for variant in "http" "sdk"; do \ if [ ! -d "$$building_block/python/$$variant" ]; then \ echo "$$building_block/python/$$variant does not exist."; \ else \ echo "Validating $$building_block/python/$$variant quickstart"; \ (cd $$building_block/python/$$variant && \ python3 -m venv .venv && \ . .venv/bin/activate && \ make validate && \ deactivate && \ rm -rf .venv) || echo "Validation failed for $$building_block/python/$$variant"; \ fi; \ done; \ done @echo "Python quickstart testing complete!" # Test C# quickstarts .PHONY: test_csharp_quickstarts test_csharp_quickstarts: @echo "Testing all C# quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ for variant in "http" "sdk"; do \ if [ ! -d "$$building_block/csharp/$$variant" ]; then \ echo "$$building_block/csharp/$$variant does not exist."; \ else \ echo "Validating $$building_block/csharp/$$variant quickstart"; \ (cd $$building_block/csharp/$$variant && make validate) || echo "Validation failed for $$building_block/csharp/$$variant"; \ fi; \ done; \ done @echo "C# quickstart testing complete!" # Test Java quickstarts .PHONY: test_java_quickstarts test_java_quickstarts: @echo "Testing all Java quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ for variant in "http" "sdk"; do \ if [ ! -d "$$building_block/java/$$variant" ]; then \ echo "$$building_block/java/$$variant does not exist."; \ else \ echo "Validating $$building_block/java/$$variant quickstart"; \ (cd $$building_block/java/$$variant && make validate) || echo "Validation failed for $$building_block/java/$$variant"; \ fi; \ done; \ done @echo "Java quickstart testing complete!" # Test JavaScript quickstarts .PHONY: test_javascript_quickstarts test_javascript_quickstarts: @echo "Testing all JavaScript quickstarts..." @building_blocks=$$(find . -maxdepth 1 -mindepth 1 -type d); \ for building_block in $$building_blocks; do \ for variant in "http" "sdk"; do \ if [ ! -d "$$building_block/javascript/$$variant" ]; then \ echo "$$building_block/javascript/$$variant does not exist."; \ else \ echo "Validating $$building_block/javascript/$$variant quickstart"; \ (cd $$building_block/javascript/$$variant && make validate) || echo "Validation failed for $$building_block/javascript/$$variant"; \ fi; \ done; \ done @echo "JavaScript quickstart testing complete!"