Container-Buildah
view release on metacpan or search on metacpan
lib/Container/Buildah.pm view on Meta::CPAN
# Container::Buildah
# ABSTRACT: wrapper around containers/buildah tool for multi-stage builds of OCI/Docker-compatible Linux containers
# 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;
$Container::Buildah::VERSION = '0.3.1';
use autodie;
use Carp qw(croak confess);
use Exporter;
use Readonly;
use Getopt::Long;
use Data::Dumper;
use IO::Handle;
use File::Slurp;
use File::Sync qw(sync);
use Algorithm::Dependency;
use Algorithm::Dependency::Source::HoA;
use YAML::XS;
use Template;
use parent qw(Class::Singleton);
# import from Container::Buildah::Subcommand after BEGIN phase (where 'use' takes place), to avoid conflicts
require Container::Buildah::Subcommand;
Container::Buildah::Subcommand->import(qw(process_params prog));
# methods delegated to Container::Buildah::Subcommand that need to be imported into this class' symbol table
# (methods should not be handled by Exporter - we are doing the same thing but keeping it private to the class)
Readonly::Array my @subcommand_methods => qw(cmd container_compat_check buildah bud containers from images info
inspect mount pull push_image rename rm rmi tag umount unshare version);
# aliases to de-conflict wrapper methods that have same name as Perl builtins
Readonly::Hash my %subcommand_aliases => (push => "push_image", rename => "rename_image");
#
# initialize environment
#
# globals
my $debug=0;
my %template_config = (
INTERPOLATE => 1,
POST_CHOMP => 1,
RECURSION => 1,
EVAL_PERL => 0,
PRE_CHOMP => 2,
POST_CHOMP => 2,
);
my %init_config;
# initialization on the singleton instance
# see parent Class::Singleton
# private class method - required by parent Class::Singleton
## no critic (Subroutines::ProhibitUnusedPrivateSubroutines, Miscellanea::ProhibitUnrestrictedNoCritic))
sub _new_instance
{
my ($class, %params) = @_;
my $self = bless { }, $class;
# debugging isn't established yet so just be verbose about startup parameters if debug is specified
if (exists $params{debug})
{
print STDERR "debug: _new_instance: params=".Dumper(\%params);
( run in 0.645 second using v1.01-cache-2.11-cpan-39bf76dae61 )