Add Net::GitHub Example for mass creating of webhooks
[grml-infrastructure.git] / tools / github
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use v5.10;
6 use File::HomeDir;
7 use File::Slurp qw ( slurp );
8 use Data::Dumper;
9 use Net::GitHub;
10
11
12 my $token = slurp(File::HomeDir->my_home . "/.github-token");
13
14 my $gh = Net::GitHub->new(  # Net::GitHub::V3
15     access_token => $token
16 );
17
18 my @repos = $gh->repos->list_org('grml');
19
20 foreach my $repo (@repos) {
21     say $repo->{name};
22     say "-" x length($repo->{name});
23     my @hooks = $gh->repos->hooks('grml', $repo->{name});
24     my $found = 0;
25     foreach my $hook (@hooks) {
26         #warn Dumper($hook);
27         next unless $hook->{name} eq 'web';
28         next unless $hook->{config}->{url} eq "http://git.grml.org/github";
29         $found = 1;
30     }
31     if ($found) {
32         say "git.grml.org hook already configured";
33     } else {
34         my $rc = $gh->repos->create_hook('grml', $repo->{name}, {
35                 name => 'web',
36                 active => 1,
37                 config => {
38                     'content_type' => 'form',
39                     'url' => 'http://git.grml.org/github'
40                 }
41             });
42         say "Hook created" if $rc->{config}->{url} eq "http://git.grml.org/github";
43     }
44 }