From e18f8bf4fc55774472bcce50fe8e0fd735722255 Mon Sep 17 00:00:00 2001 From: Aoran Zeng Date: Sat, 17 Aug 2024 06:46:06 +0800 Subject: [PATCH] Clearer feature displaying --- include/source.h | 10 ++++- src/chsrc.c | 84 +++++++++++++++++++++++++----------------- src/recipe/lang/ruby.c | 3 +- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/include/source.h b/include/source.h index 6db51c3..863aa47 100644 --- a/include/source.h +++ b/include/source.h @@ -123,6 +123,11 @@ typedef struct SourceInfo_t { #define def_sources_n(t) const size_t t##_sources_n = xy_arylen(t##_sources) +enum StatusCan { + CanNotFully, + CanFully, + CanSemi +}; /* Target Feature Info */ typedef struct FeatInfo_t { @@ -130,9 +135,12 @@ typedef struct FeatInfo_t { bool can_reset; // 有的reset不是暂时没有实现,而是现在的实现根本就无法重置 bool can_english; - char *locally; + bool can_user_define; // 用户自定义换源URL + enum StatusCan stcan_locally; + char *locally; + char *note; } FeatInfo; diff --git a/src/chsrc.c b/src/chsrc.c index 8398ad0..f0d5afc 100644 --- a/src/chsrc.c +++ b/src/chsrc.c @@ -10,7 +10,7 @@ * | BlockLune * | * Created On : <2023-08-28> - * Last Modified : <2024-08-16> + * Last Modified : <2024-08-17> * * chsrc: Change Source —— 全平台通用命令行换源工具 * ------------------------------------------------------------*/ @@ -106,7 +106,7 @@ Chsrc_Usage[] = { "list (或 ls, 或 l) 列出可用镜像源,和可换源软件", "list mirror/target 列出可用镜像源,或可换源软件", "list os/lang/ware 列出可换源的操作系统/编程语言/软件", - "list 查看该软件可以使用哪些源", + "list 查看该软件的可用源与支持功能", "cesu 对该软件所有源测速", "get 查看当前软件的源使用情况", "set 换源,自动测速后挑选最快源", @@ -124,7 +124,7 @@ Chsrc_Usage[] = { void -print_available_mirrors () +cli_print_available_mirrors () { chsrc_info ("支持以下镜像站"); chsrc_info ("下方 code 列,可用于指定使用某镜像站,请使用 chsrc set \n"); @@ -140,7 +140,7 @@ print_available_mirrors () void -print_supported_targets_ (const char ***array, size_t size) +cli_print_supported_targets_ (const char ***array, size_t size) { for (int i=0; ifeatfn) { FeatInfo fi = target->featfn(""); - cli_print_target_features (fi); + cli_print_target_features (fi, input); } } else if (TargetOp_Cesu_Source==code) @@ -483,32 +501,32 @@ main (int argc, char const *argv[]) { if (argc < cli_arg_Target_pos) { - print_available_mirrors (); + cli_print_available_mirrors (); puts (""); - print_supported_targets (); + cli_print_supported_targets (); } else { target = argv[cli_arg_Target_pos]; if (xy_streql (target, "mirrors") || xy_streql (target, "mirror")) { - print_available_mirrors (); return 0; + cli_print_available_mirrors (); return 0; } else if (xy_streql (target, "targets") || xy_streql (target, "target")) { - print_supported_targets (); return 0; + cli_print_supported_targets (); return 0; } else if (xy_streql (target, "os")) { - print_supported_os (); return 0; + cli_print_supported_os (); return 0; } else if (xy_streql (target, "lang") || xy_streql (target, "pl") || xy_streql (target, "language")) { - print_supported_pl(); return 0; + cli_print_supported_pl(); return 0; } else if (xy_streql (target, "ware") || xy_streql (target, "software")) { - print_supported_wr (); return 0; + cli_print_supported_wr (); return 0; } matched = get_target (target, TargetOp_List_Source, NULL); diff --git a/src/recipe/lang/ruby.c b/src/recipe/lang/ruby.c index 3af45cc..8a9b65f 100644 --- a/src/recipe/lang/ruby.c +++ b/src/recipe/lang/ruby.c @@ -4,7 +4,7 @@ * File Authors : Aoran Zeng * Contributors : Nil Null * Created On : <2023-08-29> - * Last Modified : <2024-08-09> + * Last Modified : <2024-08-17> * ------------------------------------------------------------*/ static MirrorSite @@ -112,6 +112,7 @@ pl_ruby_feat (char *option) fi.can_get = true; fi.can_reset = true; + fi.stcan_locally = CanSemi; fi.locally = "gem 不支持; bundler 支持 (From v0.1.6)"; fi.can_english = false; fi.can_user_define = true;