ls 输出 scope 信息

This commit is contained in:
Aoran Zeng
2026-02-24 11:04:10 +08:00
parent 740d19f0b7
commit eba1e0ca20
2 changed files with 75 additions and 23 deletions

View File

@@ -303,25 +303,69 @@ cli_print_target_features (Target_t *target, const char *input_target_name)
}
{
char *msg = CHINESE ? " Scope: 换源作用域 "
: " Scope: scope of the recipe";
char *scope_msg = xy_strcat (3, msg, "| chsrc set -scope=default|project|user|system ", input_target_name);
char *scope_msg = NULL;
switch (target->cap_local)
for (int i=0; i<NumberOfScopeType; i++)
{
case CanNot:
printf (" %s%s\n", bdred(NoMark), scope_msg);br();
break;
case FullyCan:
printf (" %s%s\n", bdgreen(YesMark), purple(scope_msg));br();
break;
case PartiallyCan:
printf (" %s%s\n\n %s\n", bdgreen(HalfYesMark), purple(scope_msg),
target->cap_local_explain ? target->cap_local_explain : "");br();
break;
default:
xy_unreached();
ScopeCapability_t cap = target->scope_caps[i];
char *scope_name;
if (i == 0)
{
scope_name = CHINESE ? " 项目级换源" : " project scope";
scope_msg = xy_strcat (3, scope_name, " | chsrc set -scope=project ", input_target_name);
}
else if (i == 1)
{
scope_name = CHINESE ? " 用户级换源" : " user scope";
scope_msg = xy_strcat (3, scope_name, " | chsrc set -scope=user ", input_target_name);
}
else if (i == 2)
{
scope_name = CHINESE ? " 系统级换源" : " system scope";
scope_msg = xy_strcat (3, scope_name, " | chsrc set -scope=system ", input_target_name);
}
else
{
xy_unreached();
}
switch (cap)
{
case ScopeCap_Unknown:
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "是否支持该作用域尚不了解,欢迎贡献");
break;
case ScopeCap_Unable:
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "不支持的作用域");
break;
case ScopeCap_Able_But_Not_Implemented:
printf (" %s%s (%s)\n", bdyellow(HalfYesMark), purple(scope_msg), "支持但未实现");
break;
case ScopeCap_Able_And_Implemented:
printf (" %s%s (%s)\n", bdgreen(YesMark), purple(scope_msg), "支持且已实现");
break;
default:
xy_unreached();
}
}
Scope_t default_scope = target->default_scope;
char *default_scope_name = NULL;
switch (default_scope)
{
case ProjectScope:
default_scope_name = CHINESE ? "项目级" : "Project Scope";
break;
case UserScope:
default_scope_name = CHINESE ? "用户级" : "User Scope";
break;
case SystemScope:
default_scope_name = CHINESE ? "系统级" : "System Scope";
break;
default:
xy_unreached();
}
print (bdblue (" = "));
printf ("默认作用域 | chsrc set -scope=default %s (= %s)\n", input_target_name, default_scope_name);
br();
}
{

View File

@@ -7,7 +7,7 @@
* Contributors : @livelycode36
* |
* Created On : <2023-08-29>
* Last Modified : <2026-02-22>
* Last Modified : <2026-02-24>
*
* chsrc struct
* ------------------------------------------------------------*/
@@ -107,12 +107,14 @@ typedef enum Scope_t
}
Scope_t;
#define NumberOfScopeType 3
typedef enum ScopeCapability_t
{
ScopeCap_Unknown, /* 未知,缺乏对该 target 的细致了解 */
ScopeCap_Unable, /* 不支持该作用域 */
ScopeCap_Able_But_NotImplemented, /* 支持但chsrc尚未实现 */
ScopeCap_Able_And_Implemented /* 支持且chsrc已经实现 */
ScopeCap_Unknown, /* 未知,缺乏对该 target 的细致了解 */
ScopeCap_Unable, /* 不支持该作用域 */
ScopeCap_Able_But_Not_Implemented, /* 支持但chsrc尚未实现 */
ScopeCap_Able_And_Implemented /* 支持且chsrc已经实现 */
}
ScopeCapability_t;
@@ -162,8 +164,14 @@ typedef struct Target_t
Capability_t cap_local; /* 是否支持 local mode */
char *cap_local_explain; /* local mode 的说明 */
Scope_t default_scope; /* 默认作用域 */
ScopeCapability_t scope_caps[3]; /* 各作用域的支持情况 */
/**
* 各作用域的支持情况
* 0: project scope
* 1: user scope
* 2: system scope
*/
ScopeCapability_t scope_caps[NumberOfScopeType];
Scope_t default_scope; /* 默认作用域 */
char *note; /* 备注 */