Faster check program

This commit is contained in:
Aoran Zeng 2025-07-11 17:30:36 +08:00
parent b6eaa9721c
commit 291fd3cfc9
No known key found for this signature in database
GPG Key ID: 8F8BA8488E10ED98
2 changed files with 48 additions and 17 deletions

View File

@ -295,7 +295,7 @@ is_url (const char *str)
/** /**
* *
* *
* @param check_cmd `prog_name` `prog_name` * @param check_cmd @param:prog_name @param:prog_name
* 使 python Windows上 * 使 python Windows上
* Microsoft Store * Microsoft Store
* *
@ -332,55 +332,85 @@ query_program_exist (char *check_cmd, char *prog_name, int mode)
/** /**
* @brief '' chsrc_check_program()
*
* 使 "调用 程序名 --version" ( cmd_to_check_program2())
*
*
* 1. ()
* 2. 使 --version mvn
* 3. --version ()
*
* Windows Unix where
*/
static char *
cmd_to_check_program (char *prog_name)
{
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin ("where ", prog_name));
return quiet_cmd;
}
XY_Dreprecate_This("Use cmd_to_check_program() instead")
static char *
cmd_to_check_program2 (char *prog_name)
{
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin (prog_name, " --version"));
return quiet_cmd;
}
/**
* @brief
*
* @note * @note
* 1. Recipe 使 program * 1. recipe 使 program
* 2. **** * 2. **
* *
*/ */
bool bool
chsrc_check_program (char *prog_name) chsrc_check_program (char *prog_name)
{ {
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin (prog_name, " --version")); return query_program_exist (cmd_to_check_program(prog_name), prog_name, Noisy_When_Exist|Noisy_When_NonExist);
return query_program_exist (quiet_cmd, prog_name, Noisy_When_Exist|Noisy_When_NonExist);
} }
/** /**
* @brief
*
* @note * @note
* 1. * 1.
* 2. **** * 2. **
* 3. --version
*
*/ */
bool bool
chsrc_check_program_quietly (char *prog_name) chsrc_check_program_quietly (char *prog_name)
{ {
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin (prog_name, " --version")); return query_program_exist (cmd_to_check_program(prog_name), prog_name, Quiet_When_Exist|Quiet_When_NonExist);
return query_program_exist (quiet_cmd, prog_name, Quiet_When_Exist|Quiet_When_NonExist);
} }
/** /**
* @note * @brief
*
* @note
* *
*/ */
bool bool
chsrc_check_program_quietly_when_exist (char *prog_name) chsrc_check_program_quietly_when_exist (char *prog_name)
{ {
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin (prog_name, " --version")); return query_program_exist (cmd_to_check_program(prog_name), prog_name, Quiet_When_Exist|Noisy_When_NonExist);
return query_program_exist (quiet_cmd, prog_name, Quiet_When_Exist|Noisy_When_NonExist);
} }
/** /**
* @brief
*
* @note * @note
* 1. 退 * 1. 退
* 2. * 2.
* *
*/ */
void void
chsrc_ensure_program (char *prog_name) chsrc_ensure_program (char *prog_name)
{ {
char *quiet_cmd = xy_str_to_quietcmd (xy_2strjoin (prog_name, " --version")); bool exist = query_program_exist (cmd_to_check_program(prog_name), prog_name, Quiet_When_Exist|Noisy_When_NonExist);
bool exist = query_program_exist (quiet_cmd, prog_name, Quiet_When_Exist|Noisy_When_NonExist);
if (exist) if (exist)
{ {
// OK, nothing should be done // OK, nothing should be done

View File

@ -70,7 +70,8 @@ pl_python_get_py_program_name (char **prog_name)
if (py_exist) *prog_name = "python3"; if (py_exist) *prog_name = "python3";
else else
{ {
/* 不要调用 python 自己,而是使用 python --version避免Windows弹出Microsoft Store */ /* 不要调用 python 自己,而是使用 python --version或者其他方式
python 使Windows弹出Microsoft Store */
py_exist = chsrc_check_program ("python"); py_exist = chsrc_check_program ("python");
if (py_exist) *prog_name = "python"; if (py_exist) *prog_name = "python";