-
-
Save AlexDaniel/c936816bdfcf4ba89d59e8bd8777ecd8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl6 | |
use Cro::HTTP::Client; | |
my $org = ‘Raku’; | |
#my $team = ‘Everyone’; | |
my $team = ‘Raku’; | |
my $token = ‘…………………’; | |
my $headers = [ | |
User-Agent => ‘Raku inviter’, | |
Authorization => “token $token”, | |
]; | |
sub get-users($url, $token) { | |
note $url; | |
my $resp = await Cro::HTTP::Client.get: $url, | |
:$headers, content-type => ‘application/json’, | |
; | |
take await $resp.body; | |
my $next = $resp.headers.first(*.name eq ‘Link’).?value; | |
if $next && $next ~~ /‘<’ (<-[>]>*?) ‘>; rel="next"’/ { | |
my $cur-url = ~$0; | |
get-users $cur-url, $token; | |
} | |
} | |
sub add-user($url, $token, $body) { | |
my $resp = await Cro::HTTP::Client.put: $url, | |
:$headers, content-type => ‘application/json’, | |
body => $body, | |
; | |
return await $resp.body; | |
} | |
my $resp = await Cro::HTTP::Client.get: “https://api.github.com/orgs/$org/teams/$team”, | |
:$headers, content-type => ‘application/json’, | |
; | |
my $team-resp = await $resp.body; | |
note ‘Team description: ’, $team-resp<description>; | |
my $team-id = $team-resp<id>; | |
my @users; | |
for gather get-users “https://api.github.com/orgs/$org/members”, $token { | |
@users.append: @($_); | |
} | |
my @team-users; | |
for gather get-users “https://api.github.com/teams/$team-id/members”, $token { | |
@team-users.append: @($_); | |
} | |
note ‘Users:’, +@users; | |
my @users-to-add = ((@users»<login>) (-) (@team-users»<login>)).keys.pick(*); | |
note ‘Will add to the team ’, +@users-to-add, ‘ users’; | |
for @users-to-add { # [^45] { | |
note ‘Adding ’, $_; | |
add-user “https://api.github.com/teams/$team-id/memberships/$_”, $token, %(role => ‘member’); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl6 | |
use Cro::HTTP::Client; | |
#my $org-to = ‘raku-community-modules’; | |
my $org-to = ‘raku-community-modules’; | |
my $org-from = ‘Raku’; | |
my $token = ‘…………………’; | |
sub get-users($url, $token) { | |
note $url; | |
my $resp = await Cro::HTTP::Client.get: $url, | |
headers => [ | |
User-Agent => ‘Perl6->Raku inviter’, | |
Authorization => “token $token”, | |
], | |
content-type => ‘application/json’, | |
; | |
take await $resp.body; | |
my $next = $resp.headers.first(*.name eq ‘Link’).?value; | |
if $next && $next ~~ /‘<’ (<-[>]>*?) ‘>; rel="next"’/ { | |
my $cur-url = ~$0; | |
get-users $cur-url, $token; | |
} | |
} | |
sub add-user($url, $token, $body) { | |
my $resp = await Cro::HTTP::Client.put: $url, | |
headers => [ | |
User-Agent => ‘Perl6->Raku inviter’, | |
Authorization => “token $token”, | |
], | |
content-type => ‘application/json’, | |
body => $body, | |
; | |
return await $resp.body; | |
} | |
my @raku-users; | |
my @perl6-users; | |
for gather get-users “https://api.github.com/orgs/$org-to/members”, $token { | |
@raku-users.append: @($_); | |
} | |
for gather get-users “https://api.github.com/orgs/$org-from/members”, $token { | |
@perl6-users.append: @($_); | |
} | |
note ‘Org-from users:’, +@raku-users; | |
note ‘Org-to users:’, +@perl6-users; | |
my @users-to-add = ((@perl6-users»<login>) (-) (@raku-users»<login>)).keys.pick(*); | |
note ‘Will invite ’, +@users-to-add, ‘ users’; | |
for @users-to-add { # [^45] { | |
note ‘Inviting ’, $_; | |
#add-user “https://api.github.com/orgs/Raku/memberships/$_”, $token, %(role => ‘member’); | |
add-user “https://api.github.com/orgs/$org-to/memberships/$_”, $token, %(role => ‘member’); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment