Arepa

 view release on metacpan or  search on metacpan

lib/Arepa/Builder.pm  view on Meta::CPAN

package Arepa::Builder;

use strict;
use warnings;

use Carp;
use Cwd;
use File::chmod;
use File::Temp;
use File::Basename;
use File::Path;
use File::Find;
use File::Copy;
use Config::Tiny;
use YAML::Syck;

use Arepa;

my $ui_module = 'Arepa::UI::Text';

sub ui_module {
    my ($self, $module) = @_;
    if (defined $module) {
        $ui_module = $module;
    }
    eval qq(use $ui_module;);
    die $@ if $@;
    return $ui_module;
}

sub type {
    my ($self) = @_;
    my $class = ref($self) || $self;
    $class =~ s/.+:://;
    if (!$class) {
        croak "You should use a proper builder class, not ".ref($self);
    }
    return lc($class);
}

sub new {
    my ($class, %attrs) = @_;

    return bless {
                    %attrs,
                 },
                 $class;
}

sub name { $_[0]->{name} }
sub last_build_log { $_[0]->{last_build_log} }

sub config {
    my ($self, $key) = @_;
    return $self->{$key};
}


# To be implemented by each type

sub do_init {
    my ($self, $builder) = @_;
    croak "Not implemented";
}

sub init {
    my ($self, $builder) = @_;
    $self->do_init($builder);



( run in 0.439 second using v1.01-cache-2.11-cpan-39bf76dae61 )