mirror of
https://github.com/RubyMetric/chsrc
synced 2025-09-09 20:17:23 +08:00
重构部分 cli_print 函数重新使编译成功
This commit is contained in:
parent
ed4545d9f2
commit
1eb0e7ee06
107
src/chsrc-main.c
107
src/chsrc-main.c
@ -164,7 +164,7 @@ iterate_aliases (const char *aliases, bool (*callback)(const char *alias, void *
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于 cli_print_supported_targets_ 的回调函数,打印每个别名
|
* 用于 cli_print_targets_for_menu 的回调函数,打印每个别名
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
callback_print_alias (const char *alias, void *user_data)
|
callback_print_alias (const char *alias, void *user_data)
|
||||||
@ -174,17 +174,18 @@ callback_print_alias (const char *alias, void *user_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cli_print_supported_targets_ (TargetRegisterInfo_t menu[], size_t size)
|
callback_print_targets (void *data)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < size; i++)
|
Target_t *target = (Target_t *) data;
|
||||||
{
|
|
||||||
TargetRegisterInfo_t *entry = &menu[i];
|
|
||||||
|
|
||||||
// 使用通用的别名遍历函数打印所有别名
|
// 使用通用的别名遍历函数打印所有别名
|
||||||
iterate_aliases (entry->target->aliases, callback_print_alias, NULL);
|
iterate_aliases (target->aliases, callback_print_alias, NULL);
|
||||||
|
|
||||||
br(); // 每个target换行
|
br(); // 每个target换行
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cli_print_targets_for_menu (XySeq_t *menu)
|
||||||
|
{
|
||||||
|
xy_seq_each (menu, callback_print_targets);
|
||||||
br(); // 最后额外换行
|
br(); // 最后额外换行
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,50 +202,51 @@ cli_print_supported_targets ()
|
|||||||
char *msg = ENGLISH ? "Programming Languages" : "编程语言";
|
char *msg = ENGLISH ? "Programming Languages" : "编程语言";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
say ("-------------------------");
|
say ("-------------------------");
|
||||||
cli_print_supported_targets_ (chsrc_pl_menu, xy_arylen(chsrc_pl_menu));
|
cli_print_targets_for_menu (ProgStore.pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char *msg = ENGLISH ? "Operating Systems" : "操作系统";
|
char *msg = ENGLISH ? "Operating Systems" : "操作系统";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
say ("-------------------------");
|
say ("-------------------------");
|
||||||
cli_print_supported_targets_ (chsrc_os_menu, xy_arylen(chsrc_os_menu));
|
cli_print_targets_for_menu (ProgStore.os);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char *msg = ENGLISH ? "Softwares" : "软件";
|
char *msg = ENGLISH ? "Softwares" : "软件";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
say ("-------------------------");
|
say ("-------------------------");
|
||||||
cli_print_supported_targets_ (chsrc_wr_menu, xy_arylen(chsrc_wr_menu));
|
cli_print_targets_for_menu (ProgStore.wr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cli_print_supported_pl ()
|
cli_print_menu (char *menu)
|
||||||
{
|
{
|
||||||
char *msg = ENGLISH ? "Support following Programming Languages (same line indicates these targets are compatible)\n"
|
if (xy_streql (menu, "pl"))
|
||||||
|
{
|
||||||
|
char *msg =
|
||||||
|
ENGLISH ? "Support following Programming Languages (same line indicates these targets are compatible)\n"
|
||||||
: "支持对以下编程语言生态换源 (同一行表示这几个目标兼容)\n";
|
: "支持对以下编程语言生态换源 (同一行表示这几个目标兼容)\n";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
|
cli_print_targets_for_menu (ProgStore.pl);
|
||||||
cli_print_supported_targets_ (chsrc_pl_menu, xy_arylen(chsrc_pl_menu));
|
}
|
||||||
}
|
else if (xy_streql (menu, "os"))
|
||||||
|
{
|
||||||
void
|
char *msg =
|
||||||
cli_print_supported_os ()
|
ENGLISH ? "Support following Operating Systems (same line indicates these targets are compatible)\n"
|
||||||
{
|
|
||||||
char *msg = ENGLISH ? "Support following Operating Systems (same line indicates these targets are compatible)\n"
|
|
||||||
: "支持对以下操作系统换源 (同一行表示这几个目标兼容)\n";
|
: "支持对以下操作系统换源 (同一行表示这几个目标兼容)\n";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
cli_print_supported_targets_ (chsrc_os_menu, xy_arylen(chsrc_os_menu));
|
cli_print_targets_for_menu (ProgStore.os);
|
||||||
}
|
}
|
||||||
|
else if (xy_streql (menu, "wr"))
|
||||||
void
|
{
|
||||||
cli_print_supported_wr ()
|
char *msg =
|
||||||
{
|
ENGLISH ? "Support following Softwares (same line indicates these targets are compatible)\n"
|
||||||
char *msg = ENGLISH ? "Support following Softwares (same line indicates these targets are compatible)\n"
|
|
||||||
: "支持对以下软件换源 (同一行表示这几个目标兼容)\n";
|
: "支持对以下软件换源 (同一行表示这几个目标兼容)\n";
|
||||||
say (bdgreen(msg));
|
say (bdgreen(msg));
|
||||||
cli_print_supported_targets_ (chsrc_wr_menu, xy_arylen(chsrc_wr_menu));
|
cli_print_targets_for_menu (ProgStore.wr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -464,15 +466,16 @@ callback_match_alias (const char *alias, void *user_data)
|
|||||||
* @brief 用于 iterate_menu() 的回调函数
|
* @brief 用于 iterate_menu() 的回调函数
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
callback_find_target (void *data)
|
callback_is_one_of_target_aliases (void *data, void *input)
|
||||||
{
|
{
|
||||||
target = (Target_t *) data;
|
Target_t *target = (Target_t *) data;
|
||||||
if (iterate_aliases (target->aliases, callback_match_alias, (void *)input))
|
if (iterate_aliases (target->aliases, callback_match_alias, input))
|
||||||
{
|
{
|
||||||
target->prelude();
|
target->preludefn();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -488,7 +491,7 @@ callback_find_target (void *data)
|
|||||||
bool
|
bool
|
||||||
iterate_menu (XySeq_t *menu, const char *input, Target_t **target)
|
iterate_menu (XySeq_t *menu, const char *input, Target_t **target)
|
||||||
{
|
{
|
||||||
Target_t *t = xy_seq_find (menu, callback_find_target);
|
Target_t *t = xy_seq_find (menu, callback_is_one_of_target_aliases, (void *) input);
|
||||||
|
|
||||||
if (t)
|
if (t)
|
||||||
{
|
{
|
||||||
@ -754,25 +757,39 @@ main (int argc, char const *argv[])
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
target = argv[cli_arg_Target_pos];
|
target = argv[cli_arg_Target_pos];
|
||||||
if (xy_streql (target, "mirrors") || xy_streql (target, "mirror"))
|
if ( xy_streql (target, "mirrors")
|
||||||
|
|| xy_streql (target, "mirror"))
|
||||||
{
|
{
|
||||||
cli_print_available_mirrors (); return Exit_OK;
|
cli_print_available_mirrors ();
|
||||||
|
return Exit_OK;
|
||||||
}
|
}
|
||||||
else if (xy_streql (target, "targets") || xy_streql (target, "target"))
|
|
||||||
|
else if ( xy_streql (target, "targets")
|
||||||
|
|| xy_streql (target, "target"))
|
||||||
{
|
{
|
||||||
cli_print_supported_targets (); return Exit_OK;
|
cli_print_supported_targets ();
|
||||||
|
return Exit_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (xy_streql (target, "os"))
|
else if (xy_streql (target, "os"))
|
||||||
{
|
{
|
||||||
cli_print_supported_os (); return Exit_OK;
|
cli_print_menu ("os");
|
||||||
|
return Exit_OK;
|
||||||
}
|
}
|
||||||
else if (xy_streql (target, "lang") || xy_streql (target, "pl") || xy_streql (target, "language"))
|
|
||||||
|
else if ( xy_streql (target, "lang")
|
||||||
|
|| xy_streql (target, "pl")
|
||||||
|
|| xy_streql (target, "language"))
|
||||||
{
|
{
|
||||||
cli_print_supported_pl(); return Exit_OK;
|
cli_print_menu ("pl");
|
||||||
|
return Exit_OK;
|
||||||
}
|
}
|
||||||
else if (xy_streql (target, "ware") || xy_streql (target, "software"))
|
|
||||||
|
else if ( xy_streql (target, "ware")
|
||||||
|
|| xy_streql (target, "software"))
|
||||||
{
|
{
|
||||||
cli_print_supported_wr (); return Exit_OK;
|
cli_print_menu ("wr");
|
||||||
|
return Exit_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
matched = get_target (target, TargetOp_List_Config, NULL);
|
matched = get_target (target, TargetOp_List_Config, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user