API-GitForge
view release on metacpan or search on metacpan
lib/API/GitForge/GitHub.pm view on Meta::CPAN
my $user = $self->{_api}->user->show->{login};
my $repos = $self->{_api}->repos;
$repos->set_default_user_repo($user, $repo);
$repos->update({
name => "$repo",
homepage => "",
description => "Temporary fork for pull request(s)",
default_branch => "gitforge",
});
$self->_clean_config_repo("$user/$repo");
}
sub _ensure_repo {
my ($self, $target) = @_;
my ($org, $repo) = _extract_repo($target);
my $repos = $self->{_api}->repos;
my $user = $self->{_api}->user->show->{login};
my %create_opts = (name => $repo);
my $list_method;
if ($org eq $user) {
$list_method = "list_user";
} else {
$list_method = "list_org";
$create_opts{org} = $org unless $org eq $user;
}
my @list_repos = $repos->$list_method($org);
my $repo_exists = sub {
grep { $_->{name} eq $repo } @list_repos;
};
unless (&$repo_exists) {
$repos->create(\%create_opts);
until (&$repo_exists) {
sleep 5;
@list_repos = $repos->$list_method($org);
}
}
return "https://github.com/$org/$repo";
}
sub _nuke_fork {
my ($self, $upstream) = @_;
$self->_assert_fork_has_parent($upstream);
my (undef, $repo) = _extract_repo($upstream);
my $user = $self->{_api}->user->show->{login};
$self->{_api}->repos->delete($user, $repo);
}
sub _extract_repo {
$_[0] =~ m#^([^/]+)/(.+)(?:\.git)?$#;
($1, $2);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
API::GitForge::GitHub - common git forge operations using the GitHub API
=head1 VERSION
version 0.007
=head1 DESCRIPTION
See L<API::GitForge> and L<API::GitForge::Role::GitForge> for how to
use this class.
=head1 AUTHOR
Sean Whitton <spwhitton@spwhitton.name>
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2017, 2020 by Sean Whitton <spwhitton@spwhitton.name>.
This is free software, licensed under:
The GNU General Public License, Version 3, June 2007
=cut
( run in 0.836 second using v1.01-cache-2.11-cpan-754626df90b )