mirror of
https://github.com/RubyMetric/chsrc
synced 2026-03-04 04:30:28 +08:00
检查用户所要求的作用域是否能执行
This commit is contained in:
@@ -335,7 +335,7 @@ cli_print_target_features (Target_t *target, const char *input_target_name)
|
|||||||
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "是否支持该作用域尚不了解,欢迎贡献");
|
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "是否支持该作用域尚不了解,欢迎贡献");
|
||||||
break;
|
break;
|
||||||
case ScopeCap_Unable:
|
case ScopeCap_Unable:
|
||||||
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "不支持的作用域");
|
printf (" %s%s (%s)\n", bdred(NoMark), purple(scope_msg), "不支持");
|
||||||
break;
|
break;
|
||||||
case ScopeCap_Able_But_Not_Implemented:
|
case ScopeCap_Able_But_Not_Implemented:
|
||||||
printf (" %s%s (%s)\n", bdyellow(HalfYesMark), purple(scope_msg), "支持但未实现");
|
printf (" %s%s (%s)\n", bdyellow(HalfYesMark), purple(scope_msg), "支持但未实现");
|
||||||
@@ -666,6 +666,8 @@ get_target (const char *input, TargetOp code, char *option)
|
|||||||
{
|
{
|
||||||
if (target->setfn)
|
if (target->setfn)
|
||||||
{
|
{
|
||||||
|
/* Hook时机: 开始运行前可以在这里进行一些拦截操作 */
|
||||||
|
chsrc_check_scope_capability (target); /* 用户要求设置的作用域,真的能够执行吗? */
|
||||||
target->setfn(option);
|
target->setfn(option);
|
||||||
}
|
}
|
||||||
else chsrc_error (xy_strcat (3, "暂未对 ", input, " 实现 set 功能,邀您帮助: chsrc issue"));
|
else chsrc_error (xy_strcat (3, "暂未对 ", input, " 实现 set 功能,邀您帮助: chsrc issue"));
|
||||||
|
|||||||
@@ -1277,6 +1277,62 @@ chsrc_conclude (Source_t *source)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 检测该 target 是否实现了用户所指定的 scope 能力
|
||||||
|
*
|
||||||
|
* @note 此函数目前只支持中文
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
chsrc_check_scope_capability (Target_t *target)
|
||||||
|
{
|
||||||
|
ScopeCapability_t cap = ScopeCap_Unknown;
|
||||||
|
|
||||||
|
char *msg1 = "不支持";
|
||||||
|
char *msg2 = "换源,请使用 chsrc ls ";
|
||||||
|
char *msg3 = " 查看支持的作用域以及默认作用域";
|
||||||
|
|
||||||
|
char *aliases = target->aliases;
|
||||||
|
char *scope_name = NULL;
|
||||||
|
|
||||||
|
if (chsrc_in_project_scope_mode())
|
||||||
|
{
|
||||||
|
cap = target->scope_caps[ScopeCap_Slot_Project];
|
||||||
|
|
||||||
|
if (cap != ScopeCap_Able_And_Implemented)
|
||||||
|
{
|
||||||
|
scope_name = "项目级";
|
||||||
|
char* msg = xy_strcat (5, msg1, scope_name, msg2, aliases, msg3);
|
||||||
|
chsrc_error (msg);
|
||||||
|
exit (Exit_UserCause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (chsrc_in_user_scope_mode())
|
||||||
|
{
|
||||||
|
cap = target->scope_caps[ScopeCap_Slot_User];
|
||||||
|
|
||||||
|
if (cap != ScopeCap_Able_And_Implemented)
|
||||||
|
{
|
||||||
|
scope_name = "用户级";
|
||||||
|
char* msg = xy_strcat (5, msg1, scope_name, msg2, aliases, msg3);
|
||||||
|
chsrc_error (msg);
|
||||||
|
exit (Exit_UserCause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (chsrc_in_system_scope_mode())
|
||||||
|
{
|
||||||
|
cap = target->scope_caps[ScopeCap_Slot_System];
|
||||||
|
|
||||||
|
if (cap != ScopeCap_Able_And_Implemented)
|
||||||
|
{
|
||||||
|
scope_name = "系统级";
|
||||||
|
char* msg = xy_strcat (5, msg1, scope_name, msg2, aliases, msg3);
|
||||||
|
chsrc_error (msg);
|
||||||
|
exit (Exit_UserCause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
chsrc_ensure_root ()
|
chsrc_ensure_root ()
|
||||||
|
|||||||
@@ -108,6 +108,9 @@ typedef enum Scope_t
|
|||||||
Scope_t;
|
Scope_t;
|
||||||
|
|
||||||
#define NumberOfScopeType 3
|
#define NumberOfScopeType 3
|
||||||
|
#define ScopeCap_Slot_Project 0
|
||||||
|
#define ScopeCap_Slot_User 1
|
||||||
|
#define ScopeCap_Slot_System 2
|
||||||
|
|
||||||
typedef enum ScopeCapability_t
|
typedef enum ScopeCapability_t
|
||||||
{
|
{
|
||||||
@@ -166,9 +169,7 @@ typedef struct Target_t
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 各作用域的支持情况
|
* 各作用域的支持情况
|
||||||
* 0: project scope
|
* 参考 ScopeCap_Slot_Xxx 的值
|
||||||
* 1: user scope
|
|
||||||
* 2: system scope
|
|
||||||
*/
|
*/
|
||||||
ScopeCapability_t scope_caps[NumberOfScopeType];
|
ScopeCapability_t scope_caps[NumberOfScopeType];
|
||||||
Scope_t default_scope; /* 默认作用域 */
|
Scope_t default_scope; /* 默认作用域 */
|
||||||
|
|||||||
Reference in New Issue
Block a user