docs: 完善 cli 命令的注释
This commit is contained in:
parent
004bc076b1
commit
1d52cc1229
@ -1,5 +1,7 @@
|
|||||||
|
import org.jcnc.snow.cli.commands.CLICommand;
|
||||||
|
|
||||||
module org.jcnc.snow.compiler {
|
module org.jcnc.snow.compiler {
|
||||||
uses org.jcnc.snow.cli.CLICommand;
|
uses CLICommand;
|
||||||
requires java.desktop;
|
requires java.desktop;
|
||||||
requires java.logging;
|
requires java.logging;
|
||||||
exports org.jcnc.snow.compiler.ir.core;
|
exports org.jcnc.snow.compiler.ir.core;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
||||||
import org.jcnc.snow.pkg.lifecycle.LifecycleManager;
|
import org.jcnc.snow.pkg.lifecycle.LifecycleManager;
|
||||||
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
package org.jcnc.snow.cli;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
|
import org.jcnc.snow.cli.SnowCLI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所有 CLI 子命令(如 compile、run 等)都必须实现的命令接口。
|
* 所有 CLI 子命令(如 compile、run 等)都必须实现的命令接口。
|
||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
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.LifecycleManager;
|
||||||
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
||||||
import org.jcnc.snow.pkg.tasks.CleanTask;
|
import org.jcnc.snow.pkg.tasks.CleanTask;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
||||||
import org.jcnc.snow.pkg.model.Project;
|
import org.jcnc.snow.pkg.model.Project;
|
||||||
import org.jcnc.snow.pkg.tasks.CompileTask;
|
import org.jcnc.snow.pkg.tasks.CompileTask;
|
||||||
@ -11,20 +10,40 @@ import java.nio.file.Paths;
|
|||||||
* CLI 命令:编译当前项目。
|
* CLI 命令:编译当前项目。
|
||||||
* <p>
|
* <p>
|
||||||
* 负责读取项目描述文件并委托给 {@link CompileTask},
|
* 负责读取项目描述文件并委托给 {@link CompileTask},
|
||||||
|
* 将 .snow 文件编译为 .water 字节码。
|
||||||
* </p>
|
* </p>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 用法示例:
|
||||||
|
* $ snow compile -o main -d src/
|
||||||
|
* $ snow compile run entry.snow
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public final class CompileCommand implements CLICommand {
|
public final class CompileCommand implements CLICommand {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回命令名称,用于 CLI 调用。
|
||||||
|
*
|
||||||
|
* @return 命令名称,如 "compile"
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String name() {
|
public String name() {
|
||||||
return "compile";
|
return "compile";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回命令简介,用于 CLI 帮助或命令列表展示。
|
||||||
|
*
|
||||||
|
* @return 命令描述字符串
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String description() {
|
public String description() {
|
||||||
return "Compile .snow source files into VM byte-code (.water).";
|
return "Compile .snow source files into VM byte-code (.water).";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印命令用法信息。
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void printUsage() {
|
public void printUsage() {
|
||||||
System.out.println("Usage:");
|
System.out.println("Usage:");
|
||||||
@ -32,14 +51,22 @@ public final class CompileCommand implements CLICommand {
|
|||||||
System.out.println("Options:");
|
System.out.println("Options:");
|
||||||
System.out.println(" run compile then run");
|
System.out.println(" run compile then run");
|
||||||
System.out.println(" -o <name> specify output base name (without .water suffix)");
|
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
|
@Override
|
||||||
public int execute(String[] args) throws Exception {
|
public int execute(String[] args) throws Exception {
|
||||||
// 解析云项目描述文件(默认为工作目录下的 cloud.snow)
|
// 解析云项目描述文件(默认为工作目录下的 project.cloud)
|
||||||
Project project = CloudDSLParser.parse(Paths.get("project.cloud"));
|
Project project = CloudDSLParser.parse(Paths.get("project.cloud"));
|
||||||
// 委托给 CompileTask 处理核心编译逻辑
|
// 委托给 CompileTask 处理核心编译逻辑
|
||||||
new CompileTask(project, args).run();
|
new CompileTask(project, args).run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
||||||
import org.jcnc.snow.pkg.model.Project;
|
import org.jcnc.snow.pkg.model.Project;
|
||||||
import org.jcnc.snow.pkg.resolver.DependencyResolver;
|
import org.jcnc.snow.pkg.resolver.DependencyResolver;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
import org.jcnc.snow.pkg.dsl.CloudDSLParser;
|
||||||
import org.jcnc.snow.pkg.lifecycle.LifecycleManager;
|
import org.jcnc.snow.pkg.lifecycle.LifecycleManager;
|
||||||
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
import org.jcnc.snow.pkg.lifecycle.LifecyclePhase;
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.pkg.tasks.RunTask;
|
import org.jcnc.snow.pkg.tasks.RunTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,32 +8,58 @@ import org.jcnc.snow.pkg.tasks.RunTask;
|
|||||||
* 仅解析参数并委托给 {@link RunTask},
|
* 仅解析参数并委托给 {@link RunTask},
|
||||||
* 将 VM 运行逻辑下沉至 pkg 层,保持 CLI 无状态、薄封装。
|
* 将 VM 运行逻辑下沉至 pkg 层,保持 CLI 无状态、薄封装。
|
||||||
* </p>
|
* </p>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 用法示例:
|
||||||
|
* $ snow run main.water
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public final class RunCommand implements CLICommand {
|
public final class RunCommand implements CLICommand {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回命令名称,用于 CLI 调用。
|
||||||
|
*
|
||||||
|
* @return 命令名称,如 "run"
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String name() {
|
public String name() {
|
||||||
return "run";
|
return "run";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回命令简介,用于 CLI 帮助或命令列表展示。
|
||||||
|
*
|
||||||
|
* @return 命令描述字符串
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String description() {
|
public String description() {
|
||||||
return "Run the compiled VM bytecode file (.water)";
|
return "Run the compiled VM bytecode file (.water)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行运行任务。
|
||||||
|
*
|
||||||
|
* @param args CLI 传入的参数数组
|
||||||
|
* @return 执行结果码(0 表示成功,非 0 表示失败)
|
||||||
|
* @throws Exception 执行过程中出现错误时抛出
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int execute(String[] args) throws Exception {
|
public int execute(String[] args) throws Exception {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
printUsage();
|
printUsage();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// 委托给 RunTask 执行字节码运行逻辑
|
||||||
new RunTask(args).run();
|
new RunTask(args).run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印命令用法信息。
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void printUsage() {
|
public void printUsage() {
|
||||||
System.out.println("Usage:");
|
System.out.println("Usage:");
|
||||||
System.out.println(" snow run <program.water> [vm-options]");
|
System.out.println(" snow run <program.water>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.jcnc.snow.cli.commands;
|
package org.jcnc.snow.cli.commands;
|
||||||
|
|
||||||
import org.jcnc.snow.cli.CLICommand;
|
|
||||||
import org.jcnc.snow.cli.SnowCLI;
|
import org.jcnc.snow.cli.SnowCLI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.snow.cli.utils;
|
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.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user