penguin/AstroJS

Javascript framework for my blog

commit 4fcd58b5edf4a41625d4c39a8ca29201d37d4191

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-11T00:56:40Z
subjectRename the components
commit 4fcd58b5edf4a41625d4c39a8ca29201d37d4191
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-11T00:56:40Z

    Rename the components
---
 Makefile                                           |  7 +++
 {closure-compilerd => closure-api}/Dockerfile      | 20 ++++----
 {closure-compilerd => closure-api}/README.md       |  4 +-
 .../example/externs/browser.js                     |  0
 .../example/js/hello.js                            |  0
 {closure-compilerd => closure-api}/pom.xml         |  2 +-
 .../src/main/java/dev/tgckpg/closured/Main.java    |  2 +-
 internal/generated/buildinfo_gen.go                |  2 +-
 mk/botanres-go.mk                                  | 54 ----------------------
 mk/closure-api.mk                                  | 27 +++++++++++
 mk/common.mk                                       | 18 ++++++++
 mk/resolver-go.mk                                  | 40 ++++++++++++++++
 {botanres-go => resolver-go}/README.md             |  0
 {botanres-go => resolver-go}/cmd/botan-api/main.go |  2 +
 {botanres-go => resolver-go}/cmd/botan-gen/main.go |  0
 .../dockerfiles/api.Dockerfile                     |  6 +--
 .../dockerfiles/gen.Dockerfile                     |  6 +--
 {botanres-go => resolver-go}/go.mod                |  0
 {botanres-go => resolver-go}/go.sum                |  0
 .../internal/classmap/scan.go                      |  0
 .../internal/classmap/types.go                     |  0
 .../internal/generated/buildinfo_gen.go            |  0
 .../internal/generated/classmap_gen.go             |  0
 .../internal/resolver/resolver.go                  |  0
 24 files changed, 116 insertions(+), 74 deletions(-)

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..94a5f36
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+include mk/common.mk
+include mk/resolver-go.mk
+include mk/closure-api.mk
+
+build: build-resolver build-closure
+
+.PHONY: build
diff --git a/closure-compilerd/Dockerfile b/closure-api/Dockerfile
similarity index 57%
rename from closure-compilerd/Dockerfile
rename to closure-api/Dockerfile
index c3d1e9a..146aff4 100644
--- a/closure-compilerd/Dockerfile
+++ b/closure-api/Dockerfile
@@ -2,29 +2,31 @@ FROM maven:3.9-eclipse-temurin-21 AS build
 
 WORKDIR /src
 
+ARG JAVA_SRC_DIR
+ARG CLOSURE_NAME 
+
 # Copy pom first so Docker can cache dependencies.
-COPY pom.xml .
+COPY $JAVA_SRC_DIR/pom.xml .
 
 RUN --mount=type=cache,target=/root/.m2 \
     mvn -B -DskipTests dependency:go-offline
 
-COPY src ./src
+COPY $JAVA_SRC_DIR/src ./src
 
 RUN --mount=type=cache,target=/root/.m2 \
     mvn -B -DskipTests package
 
-
 FROM eclipse-temurin:21-jre
 
 WORKDIR /app
 
-RUN useradd -r -u 10001 closure
+ARG JAVA_SRC_DIR
+ARG CLOSURE_NAME 
 
-COPY --from=build /src/target/closure-compilerd-0.1.0.jar /app/closure-compilerd.jar
+RUN useradd -r -u 10001 closure
 
-# Optional: put your JS source tree/configs here if you want the container
-# to compile files from inside the image.
-COPY example ./example
+COPY --from=build /src/target/${CLOSURE_NAME}-0.1.0.jar /app/runtime.jar
+COPY $JAVA_SRC_DIR/example ./example
 
 USER closure
 
@@ -34,4 +36,4 @@ ENV CLOSURED_WORKERS=2
 
 EXPOSE 8080
 
-ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/closure-compilerd.jar"]
+ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/runtime.jar"]
diff --git a/closure-compilerd/README.md b/closure-api/README.md
similarity index 83%
rename from closure-compilerd/README.md
rename to closure-api/README.md
index 9609912..bc2a38b 100644
--- a/closure-compilerd/README.md
+++ b/closure-api/README.md
@@ -1,4 +1,4 @@
-# closure-compilerd-min
+# closure-api-min
 
 Tiny Closure Compiler HTTP daemon using Java's built-in HTTP server.
 
@@ -14,7 +14,7 @@ mvn -DskipTests package
 CLOSURED_ROOT=$PWD \
 CLOSURED_PORT=8080 \
 CLOSURED_WORKERS=2 \
-java -Xms256m -Xmx2g -jar target/closure-compilerd-0.1.0.jar
+java -Xms256m -Xmx2g -jar target/closure-api-0.1.0.jar
 ```
 
 ## Test
diff --git a/closure-compilerd/example/externs/browser.js b/closure-api/example/externs/browser.js
similarity index 100%
rename from closure-compilerd/example/externs/browser.js
rename to closure-api/example/externs/browser.js
diff --git a/closure-compilerd/example/js/hello.js b/closure-api/example/js/hello.js
similarity index 100%
rename from closure-compilerd/example/js/hello.js
rename to closure-api/example/js/hello.js
diff --git a/closure-compilerd/pom.xml b/closure-api/pom.xml
similarity index 97%
rename from closure-compilerd/pom.xml
rename to closure-api/pom.xml
index 5273d4f..f3c94da 100644
--- a/closure-compilerd/pom.xml
+++ b/closure-api/pom.xml
@@ -4,7 +4,7 @@
   <modelVersion>4.0.0</modelVersion>
 
   <groupId>dev.tgckpg</groupId>
-  <artifactId>closure-compilerd</artifactId>
+  <artifactId>closure-api</artifactId>
   <version>0.1.0</version>
 
   <properties>
diff --git a/closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java b/closure-api/src/main/java/dev/tgckpg/closured/Main.java
similarity index 98%
rename from closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java
rename to closure-api/src/main/java/dev/tgckpg/closured/Main.java
index 9be87ce..ab20fb7 100644
--- a/closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java
+++ b/closure-api/src/main/java/dev/tgckpg/closured/Main.java
@@ -41,7 +41,7 @@ public final class Main {
         server.createContext("/compile", Main::compile);
 
         server.start();
-        System.err.printf("closure-compilerd listening on http://0.0.0.0:%d root=%s workers=%d%n", PORT, ROOT, WORKERS);
+        System.err.printf("closure-api listening on http://0.0.0.0:%d root=%s workers=%d%n", PORT, ROOT, WORKERS);
     }
 
     private static void health(HttpExchange ex) throws IOException {
diff --git a/internal/generated/buildinfo_gen.go b/internal/generated/buildinfo_gen.go
index a798cc7..86c1428 100644
--- a/internal/generated/buildinfo_gen.go
+++ b/internal/generated/buildinfo_gen.go
@@ -2,5 +2,5 @@ package generated
 
 const (
 	IMAGE_TAG   = "dev"
-	Timestamp   = "20260610.220306"
+	Timestamp   = "20260611.005458"
 )
diff --git a/mk/botanres-go.mk b/mk/botanres-go.mk
deleted file mode 100644
index f8cde4f..0000000
--- a/mk/botanres-go.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-IMAGE_NAME ?= botanjs
-IMAGE_TAG  ?= dev
-
-JS_SRC_DIR ?= ./botanjs/src
-GO_SRC_DIR ?= ./botanres-go
-BUILDX_BUILDER ?= container-builder
-BUILDINFO_FILE := internal/generated/buildinfo_gen.go
-
-ensure-buildx:
-	@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
-		echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
-		docker buildx create \
-			--name $(BUILDX_BUILDER) \
-			--driver docker-container \
-			--driver-opt network=host \
-			--bootstrap --use; \
-	else \
-		echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
-		docker buildx use $(BUILDX_BUILDER); \
-	fi
-
-.buildinfo:
-	@mkdir -p $(dir $(BUILDINFO_FILE))
-	@printf '%s\n' \
-		'package generated' \
-		'' \
-		'const (' \
-		'	IMAGE_TAG   = "$(IMAGE_TAG)"' \
-		'	Timestamp   = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
-		')' \
-	> $(BUILDINFO_FILE)
-
-gen:
-	docker build \
-		-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
-		--output type=local,dest=$(GO_SRC_DIR)/internal/generated .
-
-build: .buildinfo ensure-buildx gen
-	docker build \
-		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
-		--load \
-		-t $(IMAGE_NAME):$(IMAGE_TAG) .
-
-push: .buildinfo ensure-buildx gen
-	docker buildx build \
-		--platform linux/amd64,linux/arm64 \
-		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
-		-t $(IMAGE_NAME):$(IMAGE_TAG) \
-		--push .
-
-inspect:
-	docker buildx imagetools inspect $(IMAGE_NAME):$(IMAGE_TAG)
-
-.PHONY: push build .buildinfo gen
diff --git a/mk/closure-api.mk b/mk/closure-api.mk
new file mode 100644
index 0000000..85a6643
--- /dev/null
+++ b/mk/closure-api.mk
@@ -0,0 +1,27 @@
+CLOSURE_IMAGE_NAME ?= closure-api
+CLOSURE_IMAGE_TAG  ?= dev
+
+CLOSURE_SRC_DIR = ./closure-api
+CLOSURE_NAME = closure-api
+
+build-closure:
+	docker build \
+		-f $(CLOSURE_SRC_DIR)/Dockerfile \
+		--build-arg JAVA_SRC_DIR=$(CLOSURE_SRC_DIR) \
+		--build-arg CLOSURE_NAME=$(CLOSURE_NAME) \
+		--load \
+		-t $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG) .
+
+push-closure: ensure-buildx
+	docker buildx build \
+		--platform linux/amd64,linux/arm64 \
+		-f $(CLOSURE_SRC_DIR)/Dockerfile \
+		--build-arg JAVA_SRC_DIR=$(CLOSURE_SRC_DIR) \
+		--build-arg CLOSURE_NAME=$(CLOSURE_NAME) \
+		-t $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG) \
+		--push .
+
+inspect-closure:
+	docker buildx imagetools inspect $(CLOSURE_IMAGE_NAME):$(CLOSURE_IMAGE_TAG)
+
+.PHONY: build-closure push-closure inspect-closure
diff --git a/mk/common.mk b/mk/common.mk
new file mode 100644
index 0000000..e6fa0ae
--- /dev/null
+++ b/mk/common.mk
@@ -0,0 +1,18 @@
+JS_SRC_DIR ?= ./botanjs/src
+
+BUILDX_BUILDER ?= container-builder
+
+ensure-buildx:
+	@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
+		echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
+		docker buildx create \
+			--name $(BUILDX_BUILDER) \
+			--driver docker-container \
+			--driver-opt network=host \
+			--bootstrap --use; \
+	else \
+		echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
+		docker buildx use $(BUILDX_BUILDER); \
+	fi
+
+.PHONY: ensure-buildx
diff --git a/mk/resolver-go.mk b/mk/resolver-go.mk
new file mode 100644
index 0000000..2886d5e
--- /dev/null
+++ b/mk/resolver-go.mk
@@ -0,0 +1,40 @@
+RESOLVER_IMAGE_NAME ?= botanjs
+RESOLVER_IMAGE_TAG  ?= dev
+
+GO_SRC_DIR ?= ./resolver-go
+
+BUILDINFO_FILE := internal/generated/buildinfo_gen.go
+
+.buildinfo:
+	@mkdir -p $(dir $(BUILDINFO_FILE))
+	@printf '%s\n' \
+		'package generated' \
+		'' \
+		'const (' \
+		'	IMAGE_TAG   = "$(RESOLVER_IMAGE_TAG)"' \
+		'	Timestamp   = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
+		')' \
+	> $(BUILDINFO_FILE)
+
+resolver-gen:
+	docker build \
+		-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
+		--output type=local,dest=$(GO_SRC_DIR)/internal/generated .
+
+build-resolver: .buildinfo ensure-buildx resolver-gen
+	docker build \
+		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
+		--load \
+		-t $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG) .
+
+push-resolver: .buildinfo ensure-buildx resolver-gen
+	docker buildx build \
+		--platform linux/amd64,linux/arm64 \
+		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
+		-t $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG) \
+		--push .
+
+inspect-resolver:
+	docker buildx imagetools inspect $(RESOLVER_IMAGE_NAME):$(RESOLVER_IMAGE_TAG)
+
+.PHONY: push-resolver build-resolver .buildinfo resolver-gen
diff --git a/botanres-go/README.md b/resolver-go/README.md
similarity index 100%
rename from botanres-go/README.md
rename to resolver-go/README.md
diff --git a/botanres-go/cmd/botan-api/main.go b/resolver-go/cmd/botan-api/main.go
similarity index 98%
rename from botanres-go/cmd/botan-api/main.go
rename to resolver-go/cmd/botan-api/main.go
index 2679453..28068cd 100644
--- a/botanres-go/cmd/botan-api/main.go
+++ b/resolver-go/cmd/botan-api/main.go
@@ -61,6 +61,8 @@ func (h handler) index(w http.ResponseWriter, req *http.Request) {
 		return
 	}
 
+	log.Println(res.JSFiles)
+
 	// Compatibility flags:
 	//   rjs/rcss/ojs/ocss => content
 	//   hjs/hcss          => hash filename only
diff --git a/botanres-go/cmd/botan-gen/main.go b/resolver-go/cmd/botan-gen/main.go
similarity index 100%
rename from botanres-go/cmd/botan-gen/main.go
rename to resolver-go/cmd/botan-gen/main.go
diff --git a/botanres-go/dockerfiles/api.Dockerfile b/resolver-go/dockerfiles/api.Dockerfile
similarity index 83%
rename from botanres-go/dockerfiles/api.Dockerfile
rename to resolver-go/dockerfiles/api.Dockerfile
index 88e730a..23ebd7e 100644
--- a/botanres-go/dockerfiles/api.Dockerfile
+++ b/resolver-go/dockerfiles/api.Dockerfile
@@ -5,14 +5,14 @@ WORKDIR /workspace
 ARG TARGETOS
 ARG TARGETARCH
 
-COPY botanres-go/go.mod botanres-go/go.sum ./
+COPY resolver-go/go.mod resolver-go/go.sum ./
 
 RUN --mount=type=cache,target=/go/pkg/mod \
     go mod download
 
 COPY "botanjs/src" "./src"
-COPY "botanres-go/cmd" "./cmd"
-COPY "botanres-go/internal" "./internal"
+COPY "resolver-go/cmd" "./cmd"
+COPY "resolver-go/internal" "./internal"
 
 RUN --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/root/.cache/go-build \
diff --git a/botanres-go/dockerfiles/gen.Dockerfile b/resolver-go/dockerfiles/gen.Dockerfile
similarity index 76%
rename from botanres-go/dockerfiles/gen.Dockerfile
rename to resolver-go/dockerfiles/gen.Dockerfile
index 2f1ddd2..ddfcd3e 100644
--- a/botanres-go/dockerfiles/gen.Dockerfile
+++ b/resolver-go/dockerfiles/gen.Dockerfile
@@ -5,14 +5,14 @@ WORKDIR /workspace
 ARG TARGETOS
 ARG TARGETARCH
 
-COPY botanres-go/go.mod botanres-go/go.sum ./
+COPY resolver-go/go.mod resolver-go/go.sum ./
 
 RUN --mount=type=cache,target=/go/pkg/mod \
     go mod download
 
 COPY "botanjs/src" "./src"
-COPY "botanres-go/cmd" "./cmd"
-COPY "botanres-go/internal" "./internal"
+COPY "resolver-go/cmd" "./cmd"
+COPY "resolver-go/internal" "./internal"
 
 RUN go run ./cmd/botan-gen \
   -src ./src \
diff --git a/botanres-go/go.mod b/resolver-go/go.mod
similarity index 100%
rename from botanres-go/go.mod
rename to resolver-go/go.mod
diff --git a/botanres-go/go.sum b/resolver-go/go.sum
similarity index 100%
rename from botanres-go/go.sum
rename to resolver-go/go.sum
diff --git a/botanres-go/internal/classmap/scan.go b/resolver-go/internal/classmap/scan.go
similarity index 100%
rename from botanres-go/internal/classmap/scan.go
rename to resolver-go/internal/classmap/scan.go
diff --git a/botanres-go/internal/classmap/types.go b/resolver-go/internal/classmap/types.go
similarity index 100%
rename from botanres-go/internal/classmap/types.go
rename to resolver-go/internal/classmap/types.go
diff --git a/botanres-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
similarity index 100%
rename from botanres-go/internal/generated/buildinfo_gen.go
rename to resolver-go/internal/generated/buildinfo_gen.go
diff --git a/botanres-go/internal/generated/classmap_gen.go b/resolver-go/internal/generated/classmap_gen.go
similarity index 100%
rename from botanres-go/internal/generated/classmap_gen.go
rename to resolver-go/internal/generated/classmap_gen.go
diff --git a/botanres-go/internal/resolver/resolver.go b/resolver-go/internal/resolver/resolver.go
similarity index 100%
rename from botanres-go/internal/resolver/resolver.go
rename to resolver-go/internal/resolver/resolver.go