Provided by: libnet-github-perl_1.05-1_all 

NAME
Net::GitHub::V3::Repos - GitHub Repos API
SYNOPSIS
use Net::GitHub::V3;
my $gh = Net::GitHub::V3->new; # read L<Net::GitHub::V3> to set right authentication info
my $repos = $gh->repos;
# set :user/:repo for simple calls
$repos->set_default_user_repo('fayland', 'perl-net-github');
my @contributors = $repos->contributors; # don't need pass user and repos
DESCRIPTION
METHODS
Repos
<http://developer.github.com/v3/repos/>
list
list_all
# All public repositories on Github
my @rp = $repos->list_all;
# starting at id 500
my @rp = $repos->list_all(500);
list_user
list_org
my @rp = $repos->list; # or my $rp = $repos->list;
my @rp = $repos->list({
type => 'private'
sort => 'updated'
});
my @rp = $repos->list_user('c9s');
my @rp = $repos->list_user('c9s', {
type => 'member'
});
my @rp = $repos->list_org('perlchina');
my @rp = $repos->list_org('perlchina', 'public');
next_repo, next_all_repo, next_user_repo, next_org_repo
# Iterate over your repositories
while (my $repo = $repos->next_repo) { ...; }
# Iterate over all public repositories
while (my $repo = $repos->next_all_repo(500)) { ...; }
# Iterate over repositories of another user
while (my $repo = $repos->next_user_repo('c9s')) { ...; }
# Iterate over repositories of an organisation
while (my $repo = $repos->next_org_repo('perlchina','public')) { ...; }
create
# create for yourself
my $rp = $repos->create( {
"name" => "Hello-World",
"description" => "This is your first repo",
"homepage" => "https://github.com"
} );
# create for organization
my $rp = $repos->create( {
"org" => "perlchina", ## the organization
"name" => "Hello-World",
"description" => "This is your first repo",
"homepage" => "https://github.com"
} );
get
my $rp = $repos->get('fayland', 'perl-net-github');
To ease the keyboard, we provied two ways to call any method which starts with :user/:repo
1. SET user/repos before call methods below
$gh->set_default_user_repo('fayland', 'perl-net-github'); # take effects for all $gh->
$repos->set_default_user_repo('fayland', 'perl-net-github'); # only take effect to $gh->repos
my @contributors = $repos->contributors;
2. If it is just for once, we can pass :user, :repo before any arguments
my @contributors = $repos->contributors($user, $repo);
update
$repos->update({ homepage => 'https://metacpan.org/module/Net::GitHub' });
delete
$repos->delete();
contributors
languages
teams
tags
contributors
my @contributors = $repos->contributors;
my @languages = $repos->languages;
my @teams = $repos->teams;
my @tags = $repos->tags;
my @branches = $repos->branches;
my $branch = $repos->branch('master');
while (my $contributor = $repos->next_contributor) { ...; }
while (my $team = $repos->next_team) { ... ; }
while (my $tags = $repos->next_tag) { ... ; }
Repo Collaborators API
<http://developer.github.com/v3/repos/collaborators/>
collaborators
is_collaborator
add_collaborator
delete_collaborator
my @collaborators = $repos->collaborators;
while (my $collaborator = $repos->next_collaborator) { ...; }
my $is = $repos->is_collaborator('fayland');
$repos->add_collaborator('fayland');
$repos->delete_collaborator('fayland');
Commits API
<http://developer.github.com/v3/repos/commits/>
commits
commit
my @commits = $repos->commits;
my @commits = $repos->commits({
author => 'fayland'
});
my $commit = $repos->commit($sha);
while (my $commit = $repos->next_commit({...})) { ...; }
comments
commit_comments
create_comment
comment
update_comment
delete_comment
my @comments = $repos->comments;
while (my $comment = $repos->next_comment) { ...; }
my @comments = $repos->commit_comments($sha);
while (my $comment = $repos->next_commit_comment($sha)) { ...; }
my $comment = $repos->create_comment($sha, {
"body" => "Nice change",
"commit_id" => "6dcb09b5b57875f334f61aebed695e2e4193db5e",
"line" => 1,
"path" => "file1.txt",
"position" => 4
});
my $comment = $repos->comment($comment_id);
my $comment = $repos->update_comment($comment_id, {
"body" => "Nice change"
});
my $st = $repos->delete_comment($comment_id);
compare_commits
my $diffs = $repos->compare_commits($base, $head);
Forks API
<http://developer.github.com/v3/repos/forks/>
forks
create_fork
my @forks = $repos->forks;
while (my $fork = $repos->next_fork) { ...; }
my $fork = $repos->create_fork;
my $fork = $repos->create_fork($org);
Repos Deploy Keys API
<http://developer.github.com/v3/repos/keys/>
keys
key
create_key
update_key
delete_key
my @keys = $repos->keys;
while (my $key = $repos->next_key) { ...; }
my $key = $repos->key($key_id); # get key
$repos->create_key( {
title => 'title',
key => $key
} );
$repos->update_key($key_id, {
title => $title,
key => $key
});
$repos->delete_key($key_id);
Repo Watching API
<http://developer.github.com/v3/repos/watching/>
watchers
my @watchers = $repos->watchers;
while (my $watcher = $repos->next_watcher) { ...; }
watched
my @repos = $repos->watched; # what I watched
my @repos = $repos->watched('c9s');
is_watching
my $is_watching = $repos->is_watching;
my $is_watching = $repos->is_watching('fayland', 'perl-net-github');
watch
unwatch
my $st = $repos->watch();
my $st = $repos->watch('fayland', 'perl-net-github');
my $st = $repos->unwatch();
my $st = $repos->unwatch('fayland', 'perl-net-github');
Subscriptions
Github changed the ideas of Watchers (stars) and Subscriptions (new watchers).
https://github.com/blog/1204-notifications-stars
The Watchers code in this module predates the terminology change, so the new Watcher methods use the
GitHub 'subscription' terminology.
subscribers
Returns a list of subscriber data hashes.
next_subscriber
Returns the next subscriber in the list, or undef if there are no more subscribers.
is_subscribed
Returns true or false if you are subscribed
$repos->is_subscribed();
$repos->is_subscribed('fayland','perl-net-github');
subscription
Returns more information about your subscription to a repo. is_subscribed is a shortcut to calling
this and checking for subscribed => 1.
subscribe
Required argument telling github if you want to subscribe or if you want to ignore mentions. If you
want to change from subscribed to ignores you need to unsubscribe first.
$repos->subscribe('fayland','perl-net-github', { subscribed => 1 })
$repos->subscribe('fayland','perl-net-github', { ignored => 1 })
unsubscribe
$repos->unsubscribe('fayland','perl-net-github');
Hooks API
<http://developer.github.com/v3/repos/hooks/>
hooks
next_hook
hook
create_hook
update_hook
test_hook
delete_hook
my @hooks = $repos->hooks;
while (my $hook = $repos->next_hook) { ...; }
my $hook = $repos->hook($hook_id);
my $hook = $repos->create_hook($hook_hash);
my $hook = $repos->update_hook($hook_id, $new_hook_hash);
my $st = $repos->test_hook($hook_id);
my $st = $repos->delete_hook($hook_id);
Repo Merging API
<http://developer.github.com/v3/repos/merging/>
merges
my $status = $repos->merges( {
"base" => "master",
"head" => "cool_feature",
"commit_message" => "Shipped cool_feature!"
} );
Repo Statuses API
<http://developer.github.com/v3/repos/statuses/>
list_statuses
$gh->set_default_user_repo('fayland', 'perl-net-github');
my @statuses = $repos->lists_statuses($sha);
Or:
my @statuses = $repos->list_statuses('fayland', 'perl-net-github', $sha);
next_status
while (my $status = $repos->next_status($sha)) { ...; }
create_status
$gh->set_default_user_repo('fayland', 'perl-net-github');
my %payload = {
"state" => "success",
"target_url" => "https://example.com/build/status",
"description" => "The build succeeded!",
"context" => "build/status"
};
my $status = $repos->create_status($sha, %payload);
Or:
my %payload = {
"state" => "success",
"target_url" => "https://example.com/build/status",
"description" => "The build succeeded!",
"context" => "build/status"
};
my $status = $repos->create_status(
'fayland', 'perl-net-github', $sha, %payload
);
Repo Releases API
<http://developer.github.com/v3/repos/releases/>
releases
my @releases = $repos->releases();
while (my $release = $repos->next_release) { ...; }
release
my $release = $repos->release($release_id);
create_release
my $release = $repos->create_release({
"tag_name" => "v1.0.0",
"target_commitish" => "master",
"name" => "v1.0.0",
"body" => "Description of the release",
"draft" => \1,
});
update_release
my $release = $repos->update_release($release_id, {
"tag_name" => "v1.0.0",
"target_commitish" => "master",
"name" => "v1.0.0",
"body" => "Description of the release",
});
delete_release
$repos->delete_release($release_id);
release_assets
my @release_assets = $repos->release_assets($release_id);
while (my $asset = $repos->next_release_asset($release_id)) { ...; }
upload_asset
my $asset = $repos->upload_asset($release_id, $name, $content_type, $file_content);
Check examples/upload_asset.pl for a working example.
release_asset
my $release_asset = $repos->release_asset($release_id, $asset_id);
update_release_asset
my $release_asset = $repos->update_release_asset($release_id, $asset_id, {
name" => "foo-1.0.0-osx.zip",
"label" => "Mac binary"
});
delete_release_asset
my $ok = $repos->delete_release_asset($release_id, $asset_id);
Contents API
<https://developer.github.com/v3/repos/contents/>
get_content
Gets the contents of a file or directory in a repository. Specify the file path or directory in
$path. If you omit $path, you will receive the contents of all files in the repository.
my $response = $repos->get_content( $owner, $repo, $path )
or
$repos->get_content(
{ owner => $owner, repo => $repo, path => $path },
)
or
$repos->get_content(
{ owner => $owner, repo => $repo, path => $path },
{ ref => 'feature-branch' }
)
Repo Deployment API
<http://developer.github.com/v3/repos/deployments/>
list_deployments
my $response = $repos->list_deployments( $owner, $repo, {
'ref' => 'feature-branch',
});
next_deployment
while (my $deployment = $repos->next_deployment( $owner, $repo, {
'ref' => 'feature-branch',
}) { ...; }
create_deployment
my $response = $repos->create_deployment( $owner, $repo, {
"ref" => 'feature-branch',
"description" => "deploying my new feature",
});
list_deployment_statuses
my $response = $repos->list_deployment_statuses( $owner, $repo, $deployment_id );
next_deployment_status
while (my $status = next_deployment_status($o,$r,$id)) { ...; }
create_deployment_status
my $response = $repos->create_deployment_status( $owner, $repo, $deployment_id, {
"state": "success",
"target_url": "https://example.com/deployment/42/output",
"description": "Deployment finished successfully."
});
Repo Statistics API
<http://developer.github.com/v3/repos/statistics/>
contributor stats
commit activity
code frequency
participation
punch card
my $contributor_stats = $repos->contributor_stats($owner, $repo);
my $commit_activity = $repos->commit_activity($owner, $repo);
my $code_freq = $repos->code_frequency($owner, $repo);
my $participation = $repos->participation($owner, $repo);
my $punch_card = $repos->punch_card($owner, $repo);
Branch Protection API
<https://docs.github.com/en/rest/branches/branch-protection>
branch_protection
my $protection = $repos->branch_protection('fayland', 'perl-net-github', 'master');
delete_branch_protection
$repos->delete_branch_protection('fayland', 'perl-net-github', 'master');
update_branch_protection
$repos->update_branch_protection('fayland', 'perl-net-github', 'master', {
allow_deletions => \0,
allow_force_pushes => \0,
block_creations => \1,
enforce_admins => \1,
required_conversation_resolution => \1,
required_linear_history => \0,
required_pull_request_reviews => {
dismiss_stale_reviews => \1,
require_code_owner_reviews => \1,
required_approving_review_count => 2,
},
required_status_checks => {
strict => \1,
contexts => []
},
restrictions => undef,
});
AUTHOR & COPYRIGHT & LICENSE
Refer Net::GitHub
perl v5.36.0 2022-10-08 Net::GitHub::V3::Repos(3pm)