chsrc/src/recipe/lang/Perl.c
2025-03-06 12:36:16 +08:00

71 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** ------------------------------------------------------------
* SPDX-License-Identifier: GPL-3.0-or-later
* -------------------------------------------------------------
* File Authors : Aoran Zeng <ccmywish@qq.com>
* Contributors : Nil Null <nil@null.org>
* |
* Created On : <2023-09-31>
* Last Modified : <2024-12-18>
* ------------------------------------------------------------*/
static SourceProvider_t pl_perl_upstream =
{
def_upstream, "https://metacpan.org/",
def_need_measure_info
};
/**
* @update 2024-05-24
*/
static Source_t pl_perl_sources[] =
{
{&pl_perl_upstream, NULL},
{&Bfsu, "https://mirrors.bfsu.edu.cn/CPAN/"},
{&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/CPAN/"},
{&Bjtu, "https://mirror.bjtu.edu.cn/cpan/"},
{&Hust, "https://mirrors.hust.edu.cn/CPAN/"},
{&Ali, "https://mirrors.aliyun.com/CPAN/"},
{&Lzuoss, "https://mirror.lzu.edu.cn/CPAN/"}
};
def_sources_n(pl_perl);
void
pl_perl_check_cmd ()
{
chsrc_ensure_program ("perl");
}
void
pl_perl_getsrc (char *option)
{
pl_perl_check_cmd ();
// @ccmywish: 注意prettyprint 仅仅是一个内部实现,可能不稳定,如果需要更稳定的,
// 可以使用 CPAN::Shell->o('conf', 'urllist');
// 另外上述两种方法无论哪种都要首先load()
char *cmd = "perl -MCPAN -e \"CPAN::HandleConfig->load(); CPAN::HandleConfig->prettyprint('urllist')\" ";
chsrc_run (cmd, RunOpt_Default);
}
/**
* @consult https://help.mirrors.cernet.edu.cn/CPAN/
*/
void
pl_perl_setsrc (char *option)
{
chsrc_yield_source_and_confirm (pl_perl);
char *cmd = xy_strjoin (3,
"perl -MCPAN -e \"CPAN::HandleConfig->load(); CPAN::HandleConfig->edit('urllist', 'unshift', '", source.url, "'); CPAN::HandleConfig->commit()\"");
chsrc_run (cmd, RunOpt_Default);
chsrc_note2 ("请您使用 perl -v 以及 cpan -v若 Perl >= v5.36 或 CPAN >= 2.29,请额外手动调用下面的命令");
p("perl -MCPAN -e \"CPAN::HandleConfig->load(); CPAN::HandleConfig->edit('pushy_https', 0);; CPAN::HandleConfig->commit()\"");
chsrc_determine_chgtype (ChgType_SemiAuto);
chsrc_conclude (&source);
}
def_target(pl_perl);