App-GitHub
view release on metacpan or search on metacpan
lib/App/GitHub.pm view on Meta::CPAN
add/remove a label (auth required)
Users
u.show get extended information on user
u.update update your users info (auth required)
u.followers
u.following
u.follow :user follow :user (auth required)
u.unfollow :user unfollow :user (auth required)
u.pub_keys Public Key Management (auth required)
u.pub_keys.add
u.pub_keys.del :number
Objects
o.tree :tree_sha1 get the contents of a tree by tree sha
o.trees :tree_sha1 get the contents of a tree by tree sha and recursively descend down the tree
o.blob :sha1 get the data of a blob (tree, file or commits)
Others
r.show :user :repo more in-depth information for a repository
r.list :user list out all the repositories for a user
u.show :user get extended information on :user
HELP
}
sub set_repo {
my ( $self, $repo ) = @_;
# validate
unless ( $repo =~ $self->repo_regexp ) {
$self->print("Wrong repo args ($repo), eg 'fayland perl-app-github'");
return;
}
my ( $owner, $name ) = ( $repo =~ $self->repo_regexp );
$self->{_data}->{owner} = $owner;
$self->{_data}->{repo} = $name;
# when call 'login' before 'repo'
my @logins = ( $self->{_data}->{login} and $self->{_data}->{pass} )
? (
login => $self->{_data}->{login},
pass => $self->{_data}->{pass}
)
: ();
$self->{github} = Net::GitHub->new(
owner => $owner,
repo => $name,
version => 3,
pass => $self->{_data}->{pass},
@logins,
);
$self->{prompt} = "$owner/$name> ";
}
sub set_login {
my ( $self, $login ) = @_;
( $login, my $pass ) = split( /\s+/, $login, 2 );
unless ( $login and $pass ) {
$self->print("Wrong login args ($login $pass), eg fayland password");
return;
}
$self->_do_login( $login, $pass );
}
sub set_loadcfg {
my ( $self, $ign ) = @_;
my $login = `git config --global github.user`;
my $pass = `git config --global github.pass`;
chomp($login);
chomp($pass);
unless ( ( $login and $pass ) or $ign ) {
$self->print("run git config --global github.user|pass fails");
return;
}
$self->_do_login( $login, $pass ) if $login and $pass;
}
sub _do_login {
my ( $self, $login, $pass ) = @_;
# save for set_repo
$self->{_data}->{login} = $login;
$self->{_data}->{pass} = $pass;
if ( $self->{_data}->{repo} ) {
$self->{github} = Net::GitHub->new(
version => 3,
owner => $self->{_data}->{owner},
repo => $self->{_data}->{repo},
login => $self->{_data}->{login},
pass => $self->{_data}->{pass}
);
}
else {
# Create a Net::GitHub object with the owner set to the logged in user
# Super convenient if you don't want to set a user first
$self->{github} = Net::GitHub->new(
version => 3,
login => $self->{_data}->{login},
pass => $self->{_data}->{pass},
owner => $self->{_data}->{login}
);
}
}
sub run_github {
my ( $self, $c1, $c2 ) = @_;
unless ( $self->github ) {
croak "not auth" if $self->silent;
$self->print(
q~not enough information. try calling login :user :pass or loadcfg~
);
return;
}
( run in 0.593 second using v1.01-cache-2.11-cpan-d8267643d1d )