diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index aa5369c..cf13eb0 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,5 +1,7 @@ +import org.jcnc.snow.cli.commands.CLICommand; + module org.jcnc.snow.compiler { - uses org.jcnc.snow.cli.CLICommand; + uses CLICommand; requires java.desktop; requires java.logging; exports org.jcnc.snow.compiler.ir.core; diff --git a/src/main/java/org/jcnc/snow/cli/commands/BuildCommand.java b/src/main/java/org/jcnc/snow/cli/commands/BuildCommand.java index f8b9c45..13019f9 100644 --- a/src/main/java/org/jcnc/snow/cli/commands/BuildCommand.java +++ b/src/main/java/org/jcnc/snow/cli/commands/BuildCommand.java @@ -1,6 +1,5 @@ package org.jcnc.snow.cli.commands; -import org.jcnc.snow.cli.CLICommand; import org.jcnc.snow.pkg.dsl.CloudDSLParser; import org.jcnc.snow.pkg.lifecycle.LifecycleManager; import org.jcnc.snow.pkg.lifecycle.LifecyclePhase; diff --git a/src/main/java/org/jcnc/snow/cli/CLICommand.java b/src/main/java/org/jcnc/snow/cli/commands/CLICommand.java similarity index 94% rename from src/main/java/org/jcnc/snow/cli/CLICommand.java rename to src/main/java/org/jcnc/snow/cli/commands/CLICommand.java index 0874cf1..5001d4d 100644 --- a/src/main/java/org/jcnc/snow/cli/CLICommand.java +++ b/src/main/java/org/jcnc/snow/cli/commands/CLICommand.java @@ -1,4 +1,6 @@ -package org.jcnc.snow.cli; +package org.jcnc.snow.cli.commands; + +import org.jcnc.snow.cli.SnowCLI; /** * 所有 CLI 子命令(如 compile、run 等)都必须实现的命令接口。 diff --git a/src/main/java/org/jcnc/snow/cli/commands/CleanCommand.java b/src/main/java/org/jcnc/snow/cli/commands/CleanCommand.java index 8f42b65..184501e 100644 --- a/src/main/java/org/jcnc/snow/cli/commands/CleanCommand.java +++ b/src/main/java/org/jcnc/snow/cli/commands/CleanCommand.java @@ -1,6 +1,5 @@ package org.jcnc.snow.cli.commands; -import org.jcnc.snow.cli.CLICommand; import org.jcnc.snow.pkg.lifecycle.LifecycleManager; import org.jcnc.snow.pkg.lifecycle.LifecyclePhase; import org.jcnc.snow.pkg.tasks.CleanTask; diff --git a/src/main/java/org/jcnc/snow/cli/commands/CompileCommand.java b/src/main/java/org/jcnc/snow/cli/commands/CompileCommand.java index 6cc11e2..634e27b 100644 --- a/src/main/java/org/jcnc/snow/cli/commands/CompileCommand.java +++ b/src/main/java/org/jcnc/snow/cli/commands/CompileCommand.java @@ -1,6 +1,5 @@ package org.jcnc.snow.cli.commands; -import org.jcnc.snow.cli.CLICommand; import org.jcnc.snow.pkg.dsl.CloudDSLParser; import org.jcnc.snow.pkg.model.Project; import org.jcnc.snow.pkg.tasks.CompileTask; @@ -11,20 +10,40 @@ import java.nio.file.Paths; * CLI 命令:编译当前项目。 *
* 负责读取项目描述文件并委托给 {@link CompileTask}, + * 将 .snow 文件编译为 .water 字节码。 *
+ * + *+ * 用法示例: + * $ snow compile -o main -d src/ + * $ snow compile run entry.snow + **/ public final class CompileCommand implements CLICommand { + /** + * 返回命令名称,用于 CLI 调用。 + * + * @return 命令名称,如 "compile" + */ @Override public String name() { return "compile"; } + /** + * 返回命令简介,用于 CLI 帮助或命令列表展示。 + * + * @return 命令描述字符串 + */ @Override public String description() { return "Compile .snow source files into VM byte-code (.water)."; } + /** + * 打印命令用法信息。 + */ @Override public void printUsage() { System.out.println("Usage:"); @@ -32,14 +51,22 @@ public final class CompileCommand implements CLICommand { System.out.println("Options:"); System.out.println(" run compile then run"); System.out.println(" -o
+ * 用法示例: + * $ snow run main.water + **/ public final class RunCommand implements CLICommand { + /** + * 返回命令名称,用于 CLI 调用。 + * + * @return 命令名称,如 "run" + */ @Override public String name() { return "run"; } + /** + * 返回命令简介,用于 CLI 帮助或命令列表展示。 + * + * @return 命令描述字符串 + */ @Override public String description() { return "Run the compiled VM bytecode file (.water)"; } + /** + * 执行运行任务。 + * + * @param args CLI 传入的参数数组 + * @return 执行结果码(0 表示成功,非 0 表示失败) + * @throws Exception 执行过程中出现错误时抛出 + */ @Override public int execute(String[] args) throws Exception { if (args.length == 0) { printUsage(); return 1; } + // 委托给 RunTask 执行字节码运行逻辑 new RunTask(args).run(); return 0; } + /** + * 打印命令用法信息。 + */ @Override public void printUsage() { System.out.println("Usage:"); - System.out.println(" snow run