smokebrew

 view release on metacpan or  search on metacpan

lib/App/SmokeBrew.pm  view on Meta::CPAN

package App::SmokeBrew;
$App::SmokeBrew::VERSION = '1.06';
#ABSTRACT: The guts of smokebrew

use strict;
use warnings;
use Pod::Usage;
use Log::Message::Simple qw[msg error];
use Module::Load::Conditional qw[can_load];
use App::SmokeBrew::IniFile;
use App::SmokeBrew::Tools;
use App::SmokeBrew::BuildPerl;
use Module::Pluggable search_path => 'App::SmokeBrew::Plugin';
use File::Spec;
use Cwd;
use Getopt::Long;

my @mirrors = (
  'http://www.cpan.org/',
  'http://cpan.cpantesters.org/',
);

use Moose;

with 'MooseX::Getopt', 'MooseX::ConfigFromFile';

use App::SmokeBrew::Types qw[ArrayRefUri ArrayRefStr];

sub get_config_from_file {
  my ($class,$file) = @_;
  my $options_hashref = App::SmokeBrew::IniFile->read_file($file);
  my $opts = delete $options_hashref->{_};
  $opts->{_plugins}->{$_} = delete $options_hashref->{$_}
    for keys %{ $options_hashref };
  return $opts;
}

has 'configfile' => (
  is => 'ro',
  default => sub {
      my $file = File::Spec->catfile(
          App::SmokeBrew::Tools->smokebrew_dir(),
          '.smokebrew', 'smokebrew.cfg' );
      return unless -e $file;
      return $file;
  },
);

use Moose::Util::TypeConstraints;
use MooseX::Types::Path::Class qw[Dir File];
use MooseX::Types::Email qw[EmailAddress];

# Mandatory

has 'builddir' => (
  is => 'ro',
  isa => Dir,
  required => 1,
  coerce => 1,
);

has 'prefix' => (
  is => 'ro',
  isa => Dir,
  required => 1,
  coerce => 1,
);



( run in 0.499 second using v1.01-cache-2.11-cpan-ceb78f64989 )