Hacktoberfest 即将到来

Hacktoberfest 即将到来,您可以加入努力,让 Perl 成为这个为期一个月的补丁和拉取请求节日中最受欢迎的语言。

DigitalOceanGitHub 联合起来,鼓励新用户参与开源。向任何 GitHub 项目提交四个拉取请求,他们就会给你一件限量版的 Hacktoberfest T恤。这听起来可能不多,但考虑一下你除了T恤以外能得到的:你的提交日志里有四个项目的记录,你的个人资料有一些历史。这是建立你的开源简历的第一步。

赞助商建议,想要参与的项目可以用“Hacktoberfest”标签标记它们的问题。这不是严格必要的,但你可以 搜索 项目认为适合新用户的问题。我认为我的所有项目都适合(我可能有点过于乐观),所以我想要一种方法来为我在所有项目中所有的问题添加标签。

我是在构建其他 GitHub 工具的时候得知这件事的。我看了 Net::GitHubPithub 和 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 拉取请求。来自 haydentyCONTRIBUTING.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或拉取请求来帮助我们。