App-GitHub
view release on metacpan or search on metacpan
lib/App/GitHub.pm view on Meta::CPAN
}
sub help {
my $self = shift;
$self->print(<<HELP);
command argument description
repo :user :repo set owner/repo, eg: 'fayland perl-app-github'
login :login :pass authenticated as :login
loadcfg authed by git config --global github.user|pass
?,h help
q,exit,quit exit
Repos
r.show more in-depth information for the :repo
r.list list out all the repositories for the :user
r.watch watch repositories (auth required)
r.unwatch unwatch repositories (auth required)
r.fork fork a repository (auth required)
r.create create a new repository (auth required)
r.set_private set a public repo private (auth required)
r.set_public set a private repo public (auth required)
r.commit :sha1 show a specific commit
Issues
i.list open|closed see a list of issues for a project
i.view :number get data on an individual issue by number
i.open open a new issue (auth required)
i.close :number close an issue (auth required)
i.reopen :number reopen an issue (auth required)
i.edit :number edit an issue (auth required)
i.comment :number
i.label add|del :num :label
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;
( run in 1.652 second using v1.01-cache-2.11-cpan-39bf76dae61 )