Footprintless
view release on metacpan or search on metacpan
lib/Footprintless/Util.pm view on Meta::CPAN
else {
require Footprintless::Factory;
$factory = Footprintless::Factory->new( $entities, @options );
}
return $factory;
}
sub invalid_entity {
my ( $coordinate, $message ) = @_;
require Footprintless::InvalidEntityException;
die(Footprintless::InvalidEntityException->new(
$coordinate, $message || "$coordinate required"
)
);
}
sub _new_extract {
my (@args) = @_;
unless ($extract_impl) {
eval {
require Archive::Extract::Libarchive;
$extract_impl = 'Archive::Extract::Libarchive';
};
}
unless ($extract_impl) {
eval {
require Archive::Extract;
$extract_impl = 'Archive::Extract';
};
}
unless ($extract_impl) {
require Footprintless::Extract;
$extract_impl = 'Footprintless::Extract';
}
return $extract_impl->new(@args);
}
sub rebase {
my ( $path, $rebase ) = @_;
my $rebased;
if ( $path =~ /^$rebase->{from}(.*)$/ ) {
$rebased = "$rebase->{to}$1";
}
else {
croak("invalid rebase $path from $rebase->{from} to $rebase->{to}");
}
return $rebased;
}
sub slurp {
my ($file) = @_;
# http://www.perl.com/pub/2003/11/21/slurp.html
return $file
? do { local ( @ARGV, $/ ) = $file; <> }
: do { local $/; <STDIN> };
}
sub spurt {
my ( $content, $file, %options ) = @_;
my $write_mode = $options{append} ? '>>' : '>';
open( my $handle, $write_mode, $file )
|| croak("unable to open [$file]: $!");
print( $handle $content );
close($handle);
}
sub temp_dir {
require File::Temp;
my $temp = File::Temp->newdir( 'fpl_XXXXXXXX', TMPDIR => 1 );
if ( !chmod( 0700, $temp ) ) {
croak("unable to create secure temp file");
}
return $temp;
}
sub temp_file {
my (%options) = @_;
require File::Temp;
my $temp = File::Temp->new(
'fpl_XXXXXXXX',
TMPDIR => 1,
( $options{suffix} ? ( SUFFIX => $options{suffix} ) : () )
);
if ( !chmod( 0600, $temp ) ) {
croak("unable to create secure temp file");
}
return $temp;
}
sub terse_dumper {
Data::Dumper->new( \@_ )->Indent(1)->Sortkeys(1)->Terse(1)->Dump();
}
1;
__END__
=pod
=head1 NAME
Footprintless::Util - A utility method package for common functionality in Footprintless
=head1 VERSION
version 1.29
=head1 SYNOPSIS
use Footprintless::Util qw(
agent
clean
default_command_runner
dumper
( run in 0.974 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )