|
| 1 | +.PHONY: closure-generate closure-externs closure-validate closure-build closure-test closure-demo clojurescript-generate clojurescript-validate clojurescript-build clojurescript-test clojurescript-package clojurescript-deploy java-generate java-check |
| 2 | + |
| 3 | +CLOSURE_INTEGRATION_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) |
| 4 | +CLOSURE_REPO_ROOT := $(abspath $(CLOSURE_INTEGRATION_DIR)/../..) |
| 5 | +CLOSURE_NODE ?= $(shell command -v node) |
| 6 | +SHADOW_CLJS_VERSION ?= 3.4.10 |
| 7 | +CLOJURESCRIPT_JAVA_HOME ?= $(firstword $(wildcard $(HOME)/.sdkman/candidates/java/21*)) |
| 8 | +CLOSURE_JAVA_21_HOME ?= $(firstword $(wildcard $(HOME)/.sdkman/candidates/java/21*)) |
| 9 | +JSINTEROP_GENERATOR_JAVA ?= $(if $(CLOSURE_JAVA_21_HOME),$(CLOSURE_JAVA_21_HOME)/bin/java,java) |
| 10 | +CLOJARS_REPOSITORY_ID ?= clojars |
| 11 | +CLOJARS_URL ?= https://repo.clojars.org/ |
| 12 | +CLOJURESCRIPT_GROUP_ID ?= org.angular.ts |
| 13 | +CLOJURESCRIPT_ARTIFACT_ID ?= angular-ts-cljs |
| 14 | +CLOJURESCRIPT_PACKAGE_VERSION ?= $(shell cd $(CLOSURE_REPO_ROOT) && node -p "JSON.parse(require('fs').readFileSync('package.json', 'utf8')).version") |
| 15 | + |
| 16 | +closure-generate: closure-externs clojurescript-generate java-generate |
| 17 | + |
| 18 | +closure-externs: |
| 19 | + @"$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/scripts/generate-externs.mjs |
| 20 | + |
| 21 | +closure-validate: |
| 22 | + @"$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/scripts/validate-externs.mjs |
| 23 | + |
| 24 | +closure-build: closure-validate |
| 25 | + @$(MAKE) -C $(CLOSURE_REPO_ROOT) build |
| 26 | + @"$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/scripts/build.mjs |
| 27 | + |
| 28 | +closure-test: closure-build clojurescript-build |
| 29 | + @cd $(CLOSURE_REPO_ROOT) && npx playwright test --config integrations/closure/playwright.config.ts |
| 30 | + |
| 31 | +closure-demo: closure-build |
| 32 | + @echo "Open http://localhost:4000/integrations/closure/demo/index.html after running make serve" |
| 33 | + |
| 34 | +clojurescript-generate: closure-externs |
| 35 | + @"$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/clojurescript/scripts/generate-cljs-types.mjs |
| 36 | + |
| 37 | +clojurescript-validate: closure-validate |
| 38 | + @"$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/clojurescript/scripts/generate-cljs-types.mjs --check |
| 39 | + |
| 40 | +clojurescript-build: clojurescript-validate |
| 41 | + @cd $(CLOSURE_INTEGRATION_DIR)/clojurescript && \ |
| 42 | + if [ -n "$(CLOJURESCRIPT_JAVA_HOME)" ]; then \ |
| 43 | + PATH="$(CLOJURESCRIPT_JAVA_HOME)/bin:$$PATH" npx --yes shadow-cljs@$(SHADOW_CLJS_VERSION) release todo; \ |
| 44 | + else \ |
| 45 | + npx --yes shadow-cljs@$(SHADOW_CLJS_VERSION) release todo; \ |
| 46 | + fi |
| 47 | + |
| 48 | +clojurescript-test: clojurescript-build |
| 49 | + @cd $(CLOSURE_REPO_ROOT) && npx playwright test --config integrations/closure/playwright.config.ts integrations/closure/clojurescript/clojurescript.test.ts |
| 50 | + |
| 51 | +clojurescript-package: clojurescript-generate |
| 52 | + @CLOJURESCRIPT_GROUP_ID="$(CLOJURESCRIPT_GROUP_ID)" \ |
| 53 | + CLOJURESCRIPT_ARTIFACT_ID="$(CLOJURESCRIPT_ARTIFACT_ID)" \ |
| 54 | + CLOJURESCRIPT_PACKAGE_VERSION="$(CLOJURESCRIPT_PACKAGE_VERSION)" \ |
| 55 | + "$(CLOSURE_NODE)" $(CLOSURE_INTEGRATION_DIR)/clojurescript/scripts/package-cljs.mjs |
| 56 | + |
| 57 | +clojurescript-deploy: clojurescript-package |
| 58 | + @cd $(CLOSURE_REPO_ROOT) && \ |
| 59 | + mvn deploy:deploy-file \ |
| 60 | + -Dfile=integrations/closure/clojurescript/target/$(CLOJURESCRIPT_ARTIFACT_ID)-$(CLOJURESCRIPT_PACKAGE_VERSION).jar \ |
| 61 | + -DpomFile=integrations/closure/clojurescript/target/$(CLOJURESCRIPT_ARTIFACT_ID)-$(CLOJURESCRIPT_PACKAGE_VERSION).pom \ |
| 62 | + -DrepositoryId=$(CLOJARS_REPOSITORY_ID) \ |
| 63 | + -Durl=$(CLOJARS_URL) |
| 64 | + |
| 65 | +java-generate: closure-externs |
| 66 | + @cd $(CLOSURE_REPO_ROOT) && \ |
| 67 | + JSINTEROP_GENERATOR_JAVA="$(JSINTEROP_GENERATOR_JAVA)" \ |
| 68 | + mvn -f integrations/closure/java/pom.xml process-sources |
| 69 | + |
| 70 | +java-check: |
| 71 | + @cd $(CLOSURE_REPO_ROOT) && \ |
| 72 | + JSINTEROP_GENERATOR_JAVA="$(JSINTEROP_GENERATOR_JAVA)" \ |
| 73 | + mvn -f integrations/closure/java/pom.xml clean verify |
| 74 | + @cd $(CLOSURE_REPO_ROOT) && \ |
| 75 | + mvn -f integrations/closure/java/demo/pom.xml clean j2cl:clean verify |
0 commit comments