docs: 完善 cli 命令的注释

This commit is contained in:
Luke 2025-06-24 09:28:09 +08:00
parent 004bc076b1
commit 1d52cc1229
11 changed files with 65 additions and 17 deletions

View File

@ -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;

View File

@ -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;

View File

@ -1,4 +1,6 @@
package org.jcnc.snow.cli;
package org.jcnc.snow.cli.commands;
import org.jcnc.snow.cli.SnowCLI;
/**
* 所有 CLI 子命令 compilerun 都必须实现的命令接口

View File

@ -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;

View File

@ -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 命令编译当前项目
* <p>
* 负责读取项目描述文件并委托给 {@link CompileTask}
* .snow 文件编译为 .water 字节码
* </p>
*
* <pre>
* 用法示例
* $ snow compile -o main -d src/
* $ snow compile run entry.snow
* </pre>
*/
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 <name> specify output base name (without .water suffix)");
System.out.println(" -d <srcDir> recursively compile all .snow files in directory"); }
System.out.println(" -d <srcDir> recursively compile all .snow files in directory");
}
/**
* 执行编译任务
*
* @param args CLI 传入的参数数组
* @return 执行结果码0 表示成功
* @throws Exception 执行过程中出现错误时抛出
*/
@Override
public int execute(String[] args) throws Exception {
// 解析云项目描述文件默认为工作目录下的 cloud.snow
// 解析云项目描述文件默认为工作目录下的 project.cloud
Project project = CloudDSLParser.parse(Paths.get("project.cloud"));
// 委托给 CompileTask 处理核心编译逻辑
new CompileTask(project, args).run();
return 0;
}
}
}

View File

@ -1,7 +1,5 @@
package org.jcnc.snow.cli.commands;
import org.jcnc.snow.cli.CLICommand;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

View File

@ -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.resolver.DependencyResolver;

View File

@ -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;

View File

@ -1,7 +1,5 @@
package org.jcnc.snow.cli.commands;
import org.jcnc.snow.cli.CLICommand;
import org.jcnc.snow.pkg.tasks.RunTask;
/**
@ -10,32 +8,58 @@ import org.jcnc.snow.pkg.tasks.RunTask;
* 仅解析参数并委托给 {@link RunTask}
* VM 运行逻辑下沉至 pkg 保持 CLI 无状态薄封装
* </p>
*
* <pre>
* 用法示例
* $ snow run main.water
* </pre>
*/
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 <program.water> [vm-options]");
System.out.println(" snow run <program.water>");
}
}

View File

@ -1,6 +1,5 @@
package org.jcnc.snow.cli.commands;
import org.jcnc.snow.cli.CLICommand;
import org.jcnc.snow.cli.SnowCLI;
/**

View File

@ -1,6 +1,6 @@
package org.jcnc.snow.cli.utils;
import org.jcnc.snow.cli.CLICommand;
import org.jcnc.snow.cli.commands.CLICommand;
import java.util.List;
import java.util.Map;