OTRS-OPM-Installer
view release on metacpan or search on metacpan
lib/OTRS/OPM/Installer.pm view on Meta::CPAN
package OTRS::OPM::Installer;
$OTRS::OPM::Installer::VERSION = '0.05';
# ABSTRACT: Install OTRS add ons
use v5.10;
use strict;
use warnings;
use Moo;
use IO::All;
use Capture::Tiny qw(:all);
use Types::Standard qw(ArrayRef Str Bool);
use OTRS::OPM::Parser;
use OTRS::OPM::Installer::Types;
use OTRS::OPM::Installer::Utils::OTRS;
use OTRS::OPM::Installer::Utils::File;
use OTRS::OPM::Installer::Logger;
has package => ( is => 'ro', isa => Str );
has otrs_version => ( is => 'ro', isa => Str, lazy => 1, default => \&_build_otrs_version );
has prove => ( is => 'ro', default => sub { 0 } );
has manager => ( is => 'ro', lazy => 1, default => \&_build_manager );
has repositories => ( is => 'ro', isa => ArrayRef[Str] );
has conf => ( is => 'ro' );
has force => ( is => 'ro', isa => Bool );
has sudo => ( is => 'ro', isa => Bool );
has utils_otrs => ( is => 'ro', lazy => 1, default => sub{ OTRS::OPM::Installer::Utils::OTRS->new } );
has verbose => ( is => 'ro', isa => Bool, default => sub { 0 } );
has logger => ( is => 'ro', lazy => 1, default => sub { OTRS::OPM::Installer::Logger->new } );
sub list_available {
my ( $self, %params ) = @_;
my %file_opts;
if ( $params{repositories} and ref $params{repositories} eq 'ARRAY' ) {
$file_opts{repositories} = $params{repositories};
}
my $package_utils = OTRS::OPM::Installer::Utils::File->new(
%file_opts,
package => 'DummyPackage', # ::File needs a package set
otrs_version => $self->otrs_version,
);
return $package_utils->list_available;
}
sub install {
my $self = shift;
if ( @_ % 2 ) {
unshift @_, 'package';
}
my %params = @_;
my %file_opts;
if ( $self->repositories ) {
$file_opts{repositories} = $self->repositories;
}
if ( $params{repositories} and ref $params{repositories} eq 'ARRAY' ) {
$file_opts{repositories} = $params{repositories};
}
my $version_string = "";
if ( $params{version} and $params{version_exact} ) {
$file_opts{version} = $params{version};
$version_string = $params{version};
}
say sprintf "Try to install %s %s...", $params{package} || $self->package, $version_string if $self->verbose;
my $installed_version = $self->utils_otrs->is_installed( package => $params{package} || $self->package );
if ( $installed_version ) {
my $message = sprintf 'Addon %s is installed (%s)',
$params{package} || $self->package, $installed_version;
$self->logger->debug( message => $message );
say $message;
if ( $params{version} ) {
my $check = $self->utils_otrs->_check_version(
( run in 2.213 seconds using v1.01-cache-2.11-cpan-751830e7986 )