OPM-Installer
view release on metacpan or search on metacpan
lib/OPM/Installer/Utils/File.pm view on Meta::CPAN
package OPM::Installer::Utils::File;
# ABSTRACT: File related utility functions
use v5.10;
use strict;
use warnings;
our $VERSION = '1.0.1'; # VERSION
use File::HomeDir;
use File::Spec;
use File::Temp;
use HTTP::Tiny;
use HTTP::Tiny::FileProtocol;
use IO::All;
use Moo;
use OPM::Installer::Logger;
use OPM::Installer::Utils::Config;
use OPM::Repository;
use Regexp::Common qw(URI);
use Types::Standard qw(ArrayRef Str Bool);
our $ALLOWED_SCHEME = [ 'HTTP', 'file' ];
has repositories => ( is => 'ro', isa => ArrayRef[Str], default => \&_repository_list );
has package => ( is => 'ro', isa => Str, required => 1 );
has framework_version => ( is => 'ro', isa => Str, required => 1 );
has version => ( is => 'ro', isa => Str );
has verbose => ( is => 'ro', isa => Bool );
has logger => ( is => 'ro', default => sub{ OPM::Installer::Logger->new } );
has rc_config => ( is => 'ro', lazy => 1, default => \&_rc_config );
has conf => ( is => 'ro' );
sub list_available {
my $self = shift;
my @repositories = @{ $self->repositories || [] };
for my $repo_url ( @repositories ) {
$repo_url .= '/otrs.xml' if '.xml' ne substr $repo_url, -4;
}
my $repo = OPM::Repository->new(
sources => \@repositories,
);
my $framework_version = $self->framework_version;
$framework_version =~ s{\.\d+$}{};
return $repo->list(
framework => $framework_version,
details => 1,
);
}
sub resolve_path {
my ($self) = @_;
my $path;
my $package = $self->package;
if ( $self->_is_url( $package ) ) {
# download file
$path = $self->_download( $package );
}
elsif ( -f $package ) {
# do nothing, file already exists
$path = $package;
}
else {
my @repositories = @{ $self->repositories || [] };
for my $repo ( @repositories ) {
$repo .= '/otrs.xml' if '.xml' ne substr $repo, -4;
}
say "Searching these repositories: @repositories" if $self->verbose;
my $repo = OPM::Repository->new(
sources => \@repositories,
);
my ($framework) = $self->framework_version =~ m{\A(\d+\.\d+)};
my ($url) = $repo->find(
( run in 2.411 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )