Hacktoberfest 即将到来

Hacktoberfest 即将到来,您可以加入努力,让 Perl 成为这个为期一个月的补丁和拉取请求节日中最受欢迎的语言。
DigitalOcean 和 GitHub 联合起来,鼓励新用户参与开源。向任何 GitHub 项目提交四个拉取请求,他们就会给你一件限量版的 Hacktoberfest T恤。这听起来可能不多,但考虑一下你除了T恤以外能得到的:你的提交日志里有四个项目的记录,你的个人资料有一些历史。这是建立你的开源简历的第一步。
赞助商建议,想要参与的项目可以用“Hacktoberfest”标签标记它们的问题。这不是严格必要的,但你可以 搜索 项目认为适合新用户的问题。我认为我的所有项目都适合(我可能有点过于乐观),所以我想要一种方法来为我在所有项目中所有的问题添加标签。
我是在构建其他 GitHub 工具的时候得知这件事的。我看了 Net::GitHub、Pithub 和 Marchex 的 github-api-tools,但我想要迭代长列表的分页结果,并逐个处理它们。GitHub 开发者 API 非常好,即使你正在重新发明轮子,你也在学习轮子,这使得这个夜晚的工作变得很有趣。
结果是我在我的 ghojo 仓库中的 hacktoberfest.pl。它将登录,列出我所有的仓库(有几百个),在每个仓库中创建“Hacktoberfest”标签,然后将标签应用到每个开放的问题上。
ghojo 项目仍然处于婴儿期(这意味着有各种拉取请求的机会)。但我通过接受一个用于返回许多项目的回调函数,提供了相当多的灵活性。
use Ghojo;
my $ghojo = Ghojo->new( { token => ... } );
my $callback = sub {
my $item = shift;
...
};
$ghojo->repos( $repo_callback );
每次我发现一个仓库——你不必知道我是如何做到的——我就运行那个回调。这有点像 File::Find 使用 wanted
coderef。你也看不到非常棒的 API 分页操作;repos
会一直获取更多结果,只要还有更多结果。
这个回调处理一个仓库,但每个仓库都有一个问题列表。我想在遇到它们时处理这个列表。所以我需要的是一个处理仓库的回调,并嵌套一个处理问题的回调。
use v5.24;
use Ghojo;
my $ghojo = Ghojo->new( { token => ... } );
my $label_name = 'Hacktoberfest';
my $callback = sub ( $item ) {
my( $user, $repo ) = split m{/}, $item->{full_name};
my $repo = $ghojo->get_repo_object( $owner, $repo );
# get the labels for that repo
my %labels = map { $_->@{ qw(name color) } } $repo->labels->@*;
unless( exists $labels{$label_name} ) {
my $rc = $repo->create_label( $label_name, 'ff5500' );
say "\tCreated $label_name label" if $rc;
}
my $callback = sub ( $item ) {
$repo->add_labels_to_issue( $item->{number}, $label_name );
return $item;
};
my $issues = $repo->issues( $callback );
return $repo;
};
$ghojo->repos( $repo_callback );
有趣的是,我在上传程序后的几个小时里收到了我的第一个 Hacktoberfest 拉取请求。来自 haydenty 的 CONTRIBUTING.md 文件被添加到了我的 ghojo 仓库中。这是我一直在打算添加到所有仓库中的东西。现在我在考虑为每个仓库添加一个问题来记录这一点,并给每个问题加上“Hacktoberfest”标签。或者,想要开始做一些简单事情的人可以为我创建问题,或者直接发送拉取请求。
如果你有很多仓库,给你的问题加标签以帮助提升 Perl 在 排名 中的位置。到月底时,我会有一个程序来撤销标签。
我中有一些是出自兴趣,也有一些是因为有些组织希望获得更好的GitHub工具。不知为何,这一切都在十月汇聚在一起。如果您希望我为您做这类事情,请告诉我!但请先提交那些拉取请求,这样您就能得到那件T恤。
这篇文章最初发表在PerlTricks.com上。
标签
brian d foy
brian d foy是一位Perl培训师和作家,同时也是Perl.com的高级编辑。他是《Mastering Perl》、《Mojolicious Web Clients》、《Learning Perl Exercises》的作者,也是《Programming Perl》、《Learning Perl》、《Intermediate Perl》和《Effective Perl Programming》的合著者。
浏览他们的文章
反馈
这篇文章有什么问题吗?请在GitHub上为我们打开一个issue或拉取请求来帮助我们。