App-PM-Announce
view release on metacpan or search on metacpan
lib/App/PM/Announce.pm view on Meta::CPAN
has verbose => qw/is ro lazy_build 1/;
sub _build_verbose {
return 0;
}
has dry_run => qw/is ro lazy_build 1/;
sub _build_dry_run {
return 0;
}
has home_dir => qw/is ro lazy_build 1/;
sub _build_home_dir {
my @home_dir;
@home_dir = map { exists $ENV{$_} && defined $ENV{$_} ? $ENV{$_} : () } qw/APP_PM_ANNOUNCE_HOME/; # Don't want to write $ENV{...} twice
@home_dir = ( File::HomeDir->my_data, '.app-pm-announce' ) unless @home_dir;
return dir( @home_dir );
}
has config_file => qw/is ro lazy_build 1/;
sub _build_config_file {
return shift->home_dir->file( 'config' );
}
has config_default => qw/is ro isa HashRef lazy_build 1/;
sub _build_config_default {
return {};
}
#has _config => qw/is ro isa Config::JFDI lazy_build 1/;
#sub _build__config {
# my $self = shift;
# return Config::JFDI->new(file => $self->config_file);
#}
#sub config {
# return shift->_config->get;
#}
has config => qw/is ro isa HashRef lazy_build 1/;
sub _build_config {
my $self = shift;
if ($self->config_file) {
return { Config::General->new(
-ConfigFile => $self->config_file,
)->getall };
}
else {
return $self->config_default,
}
}
has log_file => qw/is ro lazy_build 1/;
sub _build_log_file {
return shift->home_dir->file( 'log' );
}
has logger => qw/is ro isa Log::Dispatch lazy_build 1/;
sub _build_logger {
my $self = shift;
my $logger = Log::Dispatch->new( callbacks => sub {
my $message = join ' ',
"[@{[ DateTime->now->set_time_zone( 'local' ) ]}]",
"[$_[3]]",
"$_[1]\n",
;
# $message = "# $message" if $_[3] eq 'debug';
return $message;
} );
$logger->add( Log::Dispatch::Screen->new( name => 'screen', min_level => $self->debug ? 'debug' : 'info', stderr => 1 ) ) if $self->debug;
# $logger->add( Log::Dispatch::File->new( name => 'file', mode => 'append', min_level => 'info', filename => $self->log_file.'' ) );
return $logger;
}
has feed => qw/is ro isa HashRef lazy_build 1/;
sub _build_feed {
my $self = shift;
return {
meetup => $self->_build_meetup_feed,
linkedin => $self->_build_linkedin_feed,
greymatter => $self->_build_greymatter_feed,
useperl => $self->_build_useperl_feed,
};
}
sub _build_meetup_feed {
my $self = shift;
return undef unless my $given = $self->config->{feed}->{meetup};
return App::PM::Announce::Feed::meetup->new(
app => $self,
username => $given->{username},
password => $given->{password},
uri => $given->{uri},
venue => $given->{venue},
);
}
sub _build_linkedin_feed {
my $self = shift;
return undef unless my $given = $self->config->{feed}->{linkedin};
return App::PM::Announce::Feed::linkedin->new(
app => $self,
username => $given->{username},
password => $given->{password},
uri => $given->{uri},
);
}
sub _build_greymatter_feed {
my $self = shift;
return undef unless my $given = $self->config->{feed}->{greymatter};
return App::PM::Announce::Feed::greymatter->new(
app => $self,
username => $given->{username},
password => $given->{password},
uri => $given->{uri},
);
}
sub _build_useperl_feed {
my $self = shift;
( run in 1.436 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )