Container-Buildah
view release on metacpan or search on metacpan
lib/Container/Buildah/Stage.pm view on Meta::CPAN
# Container::Buildah::Stage
# ABSTRACT: object used by Container::Buildah to track a stage of a multi-stage container build
# by Ian Kluft
## no critic (Modules::RequireExplicitPackage)
# 'use strict' and 'use warnings' included here
use Modern::Perl qw(2015); # require 5.20.0
## use critic (Modules::RequireExplicitPackage)
package Container::Buildah::Stage;
$Container::Buildah::Stage::VERSION = '0.3.1';
use autodie;
use Carp qw(croak confess);
use Cwd;
use Readonly;
use File::stat;
use FindBin;
# import from Container::Buildah::Subcommand after BEGIN phase (where 'use' takes place), to avoid conflicts
require Container::Buildah;
require Container::Buildah::Subcommand;
Container::Buildah::Subcommand->import(qw(process_params prog));
Readonly::Scalar my $mnt_env_name => "BUILDAHUTIL_MOUNT";
Readonly::Array my @auto_accessors => qw(commit consumes depends from func_deps func_exec mnt name produces
user user_home);
my $accessors_created = 0;
# instantiate an object
# this should only be called by Container::Buildah
# these objects will be passed to each stage's stage->func_*()
# private class method
sub new {
my ($class, @in_args) = @_;
my $self = { @in_args };
bless $self, $class;
# enforce that only Container::Buildah module can call this method
my ($package) = caller;
if ($package ne "Container::Buildah") {
croak __PACKAGE__."->new() can only be called from Container::Buildah";
}
# initialize accessor methods if not done on a prior call to new()
generate_read_accessors();
# check for required name parameter
if (not exists $self->{name}) {
croak __PACKAGE__.": cannot instantiate without a name parameter";
}
# get container mount point, if in the user namespace
if (exists $ENV{$mnt_env_name}) {
$self->{mnt} = $ENV{$mnt_env_name};
}
# get ref to stage configuation
my $config = Container::Buildah->get_config("stages", $self->{name});
if ((not defined $config) or (ref $config ne "HASH")) {
croak __PACKAGE__.": no configuration for stage ".$self->{name};
}
foreach my $key (keys %$config) {
$self->{$key} = $config->{$key};
}
# check for missing stage config settings
( run in 0.582 second using v1.01-cache-2.11-cpan-39bf76dae61 )