mirror of
https://github.com/RubyMetric/chsrc
synced 2025-07-21 23:59:33 +08:00
Refactor ProgMode
This commit is contained in:
parent
e953aceb54
commit
5f8da597ff
@ -823,7 +823,7 @@ main (int argc, char const *argv[])
|
|||||||
return Exit_Unknown;
|
return Exit_Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProgMode_CMD_Reset = true;
|
ProgMode.ResetMode = true;
|
||||||
target = argv[cli_arg_Target_pos];
|
target = argv[cli_arg_Target_pos];
|
||||||
matched = get_target (target, TargetOp_Reset_Source, NULL);
|
matched = get_target (target, TargetOp_Reset_Source, NULL);
|
||||||
if (!matched) goto not_matched;
|
if (!matched) goto not_matched;
|
||||||
|
@ -50,37 +50,40 @@ TargetGroupMode =
|
|||||||
.leader_selected_index = -1
|
.leader_selected_index = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
bool
|
bool chsrc_in_target_group_mode() {return TargetGroupMode.in;}
|
||||||
chsrc_in_target_group_mode ()
|
void chsrc_set_target_group_mode(){TargetGroupMode.in = true;}
|
||||||
|
|
||||||
|
|
||||||
|
struct
|
||||||
{
|
{
|
||||||
return TargetGroupMode.in;
|
// 用户命令
|
||||||
|
bool MeasureMode;
|
||||||
|
bool ResetMode;
|
||||||
|
|
||||||
|
// 内部实现
|
||||||
|
bool TargetGroupMode;
|
||||||
|
|
||||||
|
// 用户命令选项
|
||||||
|
bool Ipv6Mode;
|
||||||
|
bool LocalMode;
|
||||||
|
bool EnglishMode;
|
||||||
|
bool DryRunMode;
|
||||||
|
bool NoColorMode;
|
||||||
}
|
}
|
||||||
|
ProgMode =
|
||||||
void
|
|
||||||
chsrc_set_target_group_mode ()
|
|
||||||
{
|
{
|
||||||
TargetGroupMode.in = true;
|
.MeasureMode = false,
|
||||||
}
|
.ResetMode = false,
|
||||||
|
.TargetGroupMode = false,
|
||||||
|
.Ipv6Mode = false,
|
||||||
bool ProgMode_CMD_Measure = false;
|
.LocalMode = false,
|
||||||
bool ProgMode_CMD_Reset = false;
|
.EnglishMode = false,
|
||||||
|
.DryRunMode = false,
|
||||||
|
.NoColorMode = false
|
||||||
/* 此时 chsrc_run() 不再是recipe中指定要运行的一个外部命令,而是作为一个功能实现的支撑 */
|
|
||||||
bool ProgMode_Run_as_a_Service = false;
|
|
||||||
|
|
||||||
enum ChgType_t
|
|
||||||
{
|
|
||||||
ChgType_Auto,
|
|
||||||
ChgType_Reset,
|
|
||||||
ChgType_SemiAuto,
|
|
||||||
ChgType_Manual,
|
|
||||||
ChgType_Untested
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ChgType_t ProgMode_ChgType = ChgType_Auto;
|
|
||||||
|
|
||||||
|
bool chsrc_in_reset_mode(){return ProgMode.ResetMode;}
|
||||||
|
|
||||||
/* 命令行选项 */
|
/* 命令行选项 */
|
||||||
bool CliOpt_IPv6 = false;
|
bool CliOpt_IPv6 = false;
|
||||||
@ -89,6 +92,7 @@ bool CliOpt_InEnglish = false;
|
|||||||
bool CliOpt_DryRun = false;
|
bool CliOpt_DryRun = false;
|
||||||
bool CliOpt_NoColor = false;
|
bool CliOpt_NoColor = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* -local 的含义是启用 *项目级* 换源
|
* -local 的含义是启用 *项目级* 换源
|
||||||
*
|
*
|
||||||
@ -106,6 +110,29 @@ bool CliOpt_NoColor = false;
|
|||||||
* 3. 最终效果本质由第三方软件决定,如 poetry 默认实现的就是项目级的换源
|
* 3. 最终效果本质由第三方软件决定,如 poetry 默认实现的就是项目级的换源
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
bool ProgMode_CMD_Measure = false;
|
||||||
|
|
||||||
|
|
||||||
|
/* 此时 chsrc_run() 不再是recipe中指定要运行的一个外部命令,而是作为一个功能实现的支撑 */
|
||||||
|
bool ProgMode_Run_as_a_Service = false;
|
||||||
|
|
||||||
|
enum ChgType_t
|
||||||
|
{
|
||||||
|
ChgType_Auto,
|
||||||
|
ChgType_Reset,
|
||||||
|
ChgType_SemiAuto,
|
||||||
|
ChgType_Manual,
|
||||||
|
ChgType_Untested
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ChgType_t ProgMode_ChgType = ChgType_Auto;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define Exit_OK 0
|
#define Exit_OK 0
|
||||||
#define Exit_Fatal 1
|
#define Exit_Fatal 1
|
||||||
#define Exit_Unknown 2
|
#define Exit_Unknown 2
|
||||||
@ -407,7 +434,7 @@ query_provider_exist (Source_t *sources, size_t size, char *target, char *input)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if (xy_streql ("reset", input)) 不再使用这种方式 */
|
/* if (xy_streql ("reset", input)) 不再使用这种方式 */
|
||||||
if (ProgMode_CMD_Reset)
|
if (chsrc_in_reset_mode())
|
||||||
{
|
{
|
||||||
char *msg = CliOpt_InEnglish ? "Will reset to the upstream's default source" : "将重置为上游默认源";
|
char *msg = CliOpt_InEnglish ? "Will reset to the upstream's default source" : "将重置为上游默认源";
|
||||||
say (msg);
|
say (msg);
|
||||||
@ -692,7 +719,7 @@ int
|
|||||||
select_mirror_autoly (Source_t *sources, size_t size, const char *target_name)
|
select_mirror_autoly (Source_t *sources, size_t size, const char *target_name)
|
||||||
{
|
{
|
||||||
/* reset 时选择默认源 */
|
/* reset 时选择默认源 */
|
||||||
if (ProgMode_CMD_Reset)
|
if (chsrc_in_reset_mode())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!CliOpt_DryRun)
|
if (!CliOpt_DryRun)
|
||||||
@ -815,12 +842,6 @@ source_has_empty_url (Source_t *source)
|
|||||||
return source->url == NULL;
|
return source->url == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
is_reset_mode ()
|
|
||||||
{
|
|
||||||
return ProgMode_CMD_Reset;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 确定所换源的信息,存储在局部变量 @var:source 中
|
* @brief 确定所换源的信息,存储在局部变量 @var:source 中
|
||||||
@ -910,7 +931,7 @@ confirm_source (Source_t *source)
|
|||||||
void
|
void
|
||||||
chsrc_determine_chgtype (enum ChgType_t type)
|
chsrc_determine_chgtype (enum ChgType_t type)
|
||||||
{
|
{
|
||||||
ProgMode_ChgType = is_reset_mode() ? ChgType_Reset : type;
|
ProgMode_ChgType = chsrc_in_reset_mode() ? ChgType_Reset : type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -941,7 +962,7 @@ chsrc_determine_chgtype (enum ChgType_t type)
|
|||||||
/**
|
/**
|
||||||
* @param source 可为NULL
|
* @param source 可为NULL
|
||||||
*
|
*
|
||||||
* @param [g]ProgMode_ChgType
|
* @dependency @gvar:ProgMode_ChgType
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
chsrc_conclude (Source_t *source)
|
chsrc_conclude (Source_t *source)
|
||||||
@ -949,8 +970,7 @@ chsrc_conclude (Source_t *source)
|
|||||||
hr();
|
hr();
|
||||||
|
|
||||||
// fprintf (stderr, "chsrc: now change type: %d\n", ProgMode_ChgType);
|
// fprintf (stderr, "chsrc: now change type: %d\n", ProgMode_ChgType);
|
||||||
|
if (chsrc_in_reset_mode())
|
||||||
if (ProgMode_CMD_Reset || ChgType_Reset == ProgMode_ChgType)
|
|
||||||
{
|
{
|
||||||
// source_is_upstream (source)
|
// source_is_upstream (source)
|
||||||
char *msg = CliOpt_InEnglish ? "Has been reset to the upstream default source" : "已重置为上游默认源";
|
char *msg = CliOpt_InEnglish ? "Has been reset to the upstream default source" : "已重置为上游默认源";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user