Ixchel
view release on metacpan or search on metacpan
lib/Ixchel/Actions/xeno_build.pm view on Meta::CPAN
);
return $self;
}
} ## end foreach my $fetch_value ( 'url', 'dst' )
$self->status_add( type => $type, status => 'Fetching ' . $fetch_name );
my $url = $self->{opts}{xeno_build}{$type}{items}{$fetch_name}{url};
my $dst = $self->{opts}{xeno_build}{$type}{items}{$fetch_name}{dst};
$self->status_add( type => $type, status => 'Fetch "' . $fetch_name . '" URL: ' . $url );
$self->status_add( type => $type, status => 'Fetch "' . $fetch_name . '" DST: ' . $dst );
$self->status_add(
type => $type,
status => 'Fetch "' . $fetch_name . '" Template: ' . $template_it
);
if ($template_it) {
# template the url
my $output = '';
eval {
$self->{t}->process( \$url, $self->{template_vars}, \$output ) || die $self->{t}->error;
$url = $output;
};
if ($@) {
$self->status_add(
type => $type,
status => 'Templating failed for "' . $fetch_name . ' for the URL"... ' . $@,
error => 1,
);
return $self->{results};
}
$self->{opts}{xeno_build}{$type}{items}{url} = $url;
# template the dst
$output = '';
eval {
$self->{t}->process( \$dst, $self->{template_vars}, \$output ) || die $self->{t}->error;
$dst = $output;
};
if ($@) {
$self->status_add(
type => $type,
status => 'Templating failed for "' . $fetch_name . ' for the URL"... ' . $@,
error => 1,
);
return $self->{results};
}
$self->{opts}{xeno_build}{$type}{items}{dst} = $dst;
$self->status_add(
type => $type,
status => 'Fetch "' . $fetch_name . '" URL Template Results: ' . $url
);
$self->status_add(
type => $type,
status => 'Fetch "' . $fetch_name . '" DST Template Results: ' . $dst
);
} ## end if ($template_it)
my $return_code = 'undef';
my $return_extra = '';
eval {
my $ua = LWP::UserAgent->new( timeout => 10 );
if ( defined( $ENV{HTTP_PROXY} ) ) {
$ua->proxy( ['http'], $ENV{HTTP_PROXY} );
}
if ( defined( $ENV{HTTPS_PROXY} ) ) {
$ua->proxy( ['https'], $ENV{HTTPS_PROXY} );
}
if ( defined( $ENV{FTP_PROXY} ) ) {
$ua->proxy( ['ftp'], $ENV{FTP_PROXY} );
}
my $response = $ua->get($url);
$return_code = $response->status_line;
my $content;
if ( $response->is_success ) {
$content = $response->decoded_content;
} else {
die( $response->status_line );
}
write_file( $dst, $content );
};
my $fetch_errored = 0;
if ($@) {
$return_extra = ' ... ' . $@;
$fetch_errored = 1;
}
$self->status_add(
type => $type,
error => $fetch_errored,
status => 'Fetch "' . $fetch_name . '" Return Code: ' . $return_code . $return_extra
);
} ## end foreach my $fetch_name (@fetch_names)
# save the fetched items as a template var for possible later usage
$self->{template_vars}{ $type . '_items' } = $self->{opts}{xeno_build}{$type}{items};
} elsif ( $type =~ /^pkgs[0-9]*$/ && $for_this_system ) {
##
##
##
## start of pkgs
##
##
##
# handle pkgs.absent
if ( defined( $self->{opts}{xeno_build}{$type}{absent}{ $self->{os} }[0] ) ) {
foreach my $pkg ( @{ $self->{opts}{xeno_build}{$type}{absent}{ $self->{os} } } ) {
eval { pkg( $pkg, ensure => 'absent' ); };
if ($@) {
$self->status_add(
type => $type,
status => 'Failed uninstalling ' . $pkg . ' for ' . $self->{os},
error => 1,
);
return $self->{results};
}
} ## end foreach my $pkg ( @{ $self->{opts}{xeno_build}{...}})
} ## end if ( defined( $self->{opts}{xeno_build}{$type...}))
# handle .pkgs.present
( run in 3.072 seconds using v1.01-cache-2.11-cpan-2e0ccfb7a10 )