Dist-Zilla-PluginBundle-GitLab
view release on metacpan or search on metacpan
README.mkdn view on Meta::CPAN
# NAME
Dist::Zilla::PluginBundle::GitLab - Access GitLab functionality to maintain distros from Dist::Zilla
# VERSION
version 1.0002
# SYNOPSIS
Configure git with your GitLab credentials:
$ git config --global gitlab.user LoginName
$ git config --global gitlab.token AccessToken
Alternatively you can install [Config::Identity](https://metacpan.org/pod/Config%3A%3AIdentity) and write your credentials
in the (optionally GPG-encrypted) `~/.gitlab` file as follows:
login LoginName
token AccessToken
Set up an access token on GitLab, in your profile under "Personal Access Tokens." You
must grant the token the `api` scope!
then, in your `dist.ini`:
lib/Dist/Zilla/Plugin/GitLab.pm view on Meta::CPAN
is => 'ro',
isa => 'Maybe[Str]',
default => 'origin',
);
has repo => (
is => 'ro',
isa => 'Maybe[Str]',
);
has _credentials => (
is => 'ro',
isa => 'HashRef',
lazy => 1,
builder => '_build_credentials',
);
has _login => (
is => 'ro',
isa => 'Maybe[Str]',
lazy => 1,
builder => '_build_login',
);
sub _build_login {
lib/Dist/Zilla/Plugin/GitLab.pm view on Meta::CPAN
? 'Err: missing value \'user\' in ~/.gitlab'
: 'Err: Missing value \'gitlab.user\' in git config';
$self->log($error);
return undef;
}
return $login;
}
sub _build_credentials {
my $self = shift;
my ( $login, $token );
$login = $self->_login;
if ( !$login ) {
return {};
}
my %identity;
lib/Dist/Zilla/Plugin/GitLab.pm view on Meta::CPAN
$token = $identity{token};
}
else {
$token = qx{git config gitlab.token};
chomp $token;
}
return { login => $login, token => $token };
}
sub _has_credentials {
my $self = shift;
return keys %{ $self->_credentials };
}
sub _auth_headers {
my $self = shift;
my $credentials = $self->_credentials;
my %headers = ();
if ( $credentials->{token} ) {
$headers{'PRIVATE-TOKEN'} = $credentials->{token};
}
return \%headers;
}
sub _get_repo_name {
my ( $self, $login ) = @_;
my $repo;
my $git = Git::Wrapper->new('./');
lib/Dist/Zilla/Plugin/GitLab/Create.pm view on Meta::CPAN
=head1 NAME
Dist::Zilla::Plugin::GitLab::Create - Create a new GitLab repo on dzil new
=head1 VERSION
version 1.0002
=head1 SYNOPSIS
Configure git with your GitLab credentials:
$ git config --global gitlab.user LoginName
$ git config --global gitlab.token AccessToken
Alternatively you can install L<Config::Identity> and write your credentials
in the (optionally GPG-encrypted) C<~/.gitlab> file as follows:
login LoginName
token AccessToken
Set up an access token on GitLab, in your profile under "Personal Access Tokens." You
must grant the token the C<api> scope!
then, in your F<profile.ini>:
lib/Dist/Zilla/Plugin/GitLab/Update.pm view on Meta::CPAN
use JSON::MaybeXS;
use Moose;
use List::Util qw(first);
use URL::Encode qw(url_encode_utf8);
extends 'Dist::Zilla::Plugin::GitLab';
with 'Dist::Zilla::Role::AfterRelease';
sub after_release {
my $self = shift;
return if ( !$self->_has_credentials );
my $repo_name = $self->_get_repo_name( $self->_credentials->{login} );
if ( not $repo_name ) {
$self->log('cannot update GitLab repository info');
return;
}
my $params = {
name => ( $repo_name =~ /\/(.*)$/ )[0],
description => $self->zilla->abstract,
};
lib/Dist/Zilla/PluginBundle/GitLab.pm view on Meta::CPAN
=head1 NAME
Dist::Zilla::PluginBundle::GitLab - Access GitLab functionality to maintain distros from Dist::Zilla
=head1 VERSION
version 1.0002
=head1 SYNOPSIS
Configure git with your GitLab credentials:
$ git config --global gitlab.user LoginName
$ git config --global gitlab.token AccessToken
Alternatively you can install L<Config::Identity> and write your credentials
in the (optionally GPG-encrypted) C<~/.gitlab> file as follows:
login LoginName
token AccessToken
Set up an access token on GitLab, in your profile under "Personal Access Tokens." You
must grant the token the C<api> scope!
then, in your F<dist.ini>:
t/tests/dist/zilla/plugin/gitlab/update.t view on Meta::CPAN
use Test2::Tools::Explain;
use Test2::Tools::JSON;
use FindBin;
use lib "$FindBin::Bin/../lib";
use Path::Tiny;
use Test::DZil;
use Dist::Zilla::Plugin::GitLab;
my $mock_dist_zilla_plugin_gitlab = mock 'Dist::Zilla::Plugin::GitLab' => (
override => [
_build_credentials =>
sub { return { login => 'bob', token => 'AbC00ToKeN' } },
_get_repo_name => sub { return 'bob/My-Stuff' },
],
);
my $http_request;
use HTTP::Tiny;
my $mock_http_tiny = mock 'HTTP::Tiny' => (
override => [
( run in 0.259 second using v1.01-cache-2.11-cpan-4d50c553e7e )