From 8ca75787b74ec7c4cb9b77537afb7497515cf685 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 18 Jun 2025 00:05:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=93=E5=8D=B0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=9A=84=E9=80=9A=E7=94=A8=E5=B8=AE=E5=8A=A9?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jcnc/snow/compiler/cli/SnowCLI.java | 101 +++++++++++++----- .../compiler/cli/commands/VersionCommand.java | 37 +++++++ 2 files changed, 111 insertions(+), 27 deletions(-) create mode 100644 src/main/java/org/jcnc/snow/compiler/cli/commands/VersionCommand.java diff --git a/src/main/java/org/jcnc/snow/compiler/cli/SnowCLI.java b/src/main/java/org/jcnc/snow/compiler/cli/SnowCLI.java index 5270dc3..b61d2ad 100644 --- a/src/main/java/org/jcnc/snow/compiler/cli/SnowCLI.java +++ b/src/main/java/org/jcnc/snow/compiler/cli/SnowCLI.java @@ -2,67 +2,98 @@ package org.jcnc.snow.compiler.cli; import org.jcnc.snow.compiler.cli.commands.CompileCommand; import org.jcnc.snow.compiler.cli.commands.RunCommand; +import org.jcnc.snow.compiler.cli.commands.VersionCommand; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Supplier; /** - * SnowCLI 是项目的命令行入口类,负责解析用户输入、分发子命令并统一处理帮助和错误。 + * SnowCLI 是项目的命令行入口类,负责解析用户输入、 + * 分发子命令,并统一处理帮助、版本和错误输出。 */ public class SnowCLI { + /** Snow 编程语言的版本号。 */ + public static final String VERSION = "1.0.0"; + + /** 全局帮助标志,当输入匹配时显示帮助信息。 */ + private static final Set GLOBAL_HELP_FLAGS = Set.of("help", "-h", "--help"); + + /** 全局版本标志,当输入匹配时显示版本信息。 */ + private static final Set GLOBAL_VERSION_FLAGS = Set.of("-v", "--version"); /** - * 保存所有可用子命令的映射:命令名称 -> 命令实例的提供者 + * 全局选项定义列表。 + * 每个 Option 包含可用标志列表及对应的描述信息。 + */ + private static final List