From 0a236d914d4d5c2c12b44ade7537e6ff6f257c52 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 24 Jun 2025 17:06:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=9F=E6=88=90=E7=9A=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E5=A2=9E=E5=8A=A0=20build=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/snow/cli/commands/InitCommand.java | 10 ++---- .../snow/cli/utils/ProjectCloudExample.java | 31 +++++++++++++++++++ .../org/jcnc/snow/pkg/tasks/GenerateTask.java | 4 +-- ...wExampleTemplate.java => SnowExample.java} | 4 +-- 4 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 src/main/java/org/jcnc/snow/cli/utils/ProjectCloudExample.java rename src/main/java/org/jcnc/snow/pkg/utils/{SnowExampleTemplate.java => SnowExample.java} (95%) diff --git a/src/main/java/org/jcnc/snow/cli/commands/InitCommand.java b/src/main/java/org/jcnc/snow/cli/commands/InitCommand.java index a83401a..d9cbf92 100644 --- a/src/main/java/org/jcnc/snow/cli/commands/InitCommand.java +++ b/src/main/java/org/jcnc/snow/cli/commands/InitCommand.java @@ -1,6 +1,7 @@ package org.jcnc.snow.cli.commands; import org.jcnc.snow.cli.api.CLICommand; +import org.jcnc.snow.cli.utils.ProjectCloudExample; import java.nio.file.Files; import java.nio.file.Path; @@ -60,14 +61,7 @@ public final class InitCommand implements CLICommand { Path dir = Paths.get(".").toAbsolutePath(); Path dsl = dir.resolve("project.cloud"); if (Files.notExists(dsl)) { - Files.writeString(dsl, """ - # Generated by snow init - project { - group = "com.example" - artifact = "demo-app" - version = "0.0.1-SNAPSHOT" - } - """); + Files.writeString(dsl, ProjectCloudExample.getProjectCloud()); System.out.println("[init] created " + dsl); } else { System.out.println("[init] project.cloud already exists"); diff --git a/src/main/java/org/jcnc/snow/cli/utils/ProjectCloudExample.java b/src/main/java/org/jcnc/snow/cli/utils/ProjectCloudExample.java new file mode 100644 index 0000000..b51e126 --- /dev/null +++ b/src/main/java/org/jcnc/snow/cli/utils/ProjectCloudExample.java @@ -0,0 +1,31 @@ +package org.jcnc.snow.cli.utils; + +public class ProjectCloudExample { + /** + * 工具类构造方法,禁止实例化。 + */ + private ProjectCloudExample() { + // 工具类不允许实例化 + } + + /** + * 获取 main.snow 示例模块的内容字符串。 + * + * @return main.snow 示例模块的完整代码 + */ + public static String getProjectCloud() { + return """ + # Generated by snow init + project { + group = "com.example" + artifact = "demo-app" + version = "0.0.1-SNAPSHOT" + } + + build { + srcDir = "src" + output = "build/demo-app" + } + """; + } +} diff --git a/src/main/java/org/jcnc/snow/pkg/tasks/GenerateTask.java b/src/main/java/org/jcnc/snow/pkg/tasks/GenerateTask.java index b7c50e3..5c820a9 100644 --- a/src/main/java/org/jcnc/snow/pkg/tasks/GenerateTask.java +++ b/src/main/java/org/jcnc/snow/pkg/tasks/GenerateTask.java @@ -1,7 +1,7 @@ package org.jcnc.snow.pkg.tasks; import org.jcnc.snow.pkg.model.Project; -import org.jcnc.snow.pkg.utils.SnowExampleTemplate; +import org.jcnc.snow.pkg.utils.SnowExample; import java.io.IOException; import java.nio.file.Files; @@ -69,7 +69,7 @@ public final class GenerateTask implements Task { // 创建 src/main.snow 示例入口文件 Path mainSnow = root.resolve("src").resolve("main.snow"); if (Files.notExists(mainSnow)) { - Files.writeString(mainSnow, SnowExampleTemplate.getMainModule()); + Files.writeString(mainSnow, SnowExample.getMainModule()); System.out.println("[generate] created src/main.snow"); } diff --git a/src/main/java/org/jcnc/snow/pkg/utils/SnowExampleTemplate.java b/src/main/java/org/jcnc/snow/pkg/utils/SnowExample.java similarity index 95% rename from src/main/java/org/jcnc/snow/pkg/utils/SnowExampleTemplate.java rename to src/main/java/org/jcnc/snow/pkg/utils/SnowExample.java index 722fd91..6aea927 100644 --- a/src/main/java/org/jcnc/snow/pkg/utils/SnowExampleTemplate.java +++ b/src/main/java/org/jcnc/snow/pkg/utils/SnowExample.java @@ -6,12 +6,12 @@ package org.jcnc.snow.pkg.utils; * 用于项目脚手架生成或帮助用户快速上手 .snow 语言。 *

*/ -public final class SnowExampleTemplate { +public final class SnowExample { /** * 工具类构造方法,禁止实例化。 */ - private SnowExampleTemplate() { + private SnowExample() { // 工具类不允许实例化 }