Footprintless::Util

- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- FUNCTIONS
  - agent()
  - clean($paths, %options)
  - default_command_runner()
  - dumper(@to_dump)
  - exit_due_to($reason, $verbose)
  - extract($archive, %options)
  - factory($entities, %options)
  - invalid_entity($message, $coordinate)
  - rebase($path, \%rebase)
  - resource_manager($agent)
  - slurp($file)
  - spurt($content, $file, %options)
  - temp_dir()
- AUTHOR
- COPYRIGHT AND LICENSE
- SEE ALSO

# NAME

Footprintless::Util - A utility method package for common functionality in Footprintless

# VERSION

version 1.03

# SYNOPSIS

        use Footprintless::Util qw(
            agent
            clean
            default_command_runner
            dumper
            exit_due_to
            extract
            resource_manager
            slurp
            spurt
            temp_dir
        );

        my $agent = agent();
        my $command_runner = default_command_runner();
        my $dumper = dumper();

        eval {
            $command_runner->run_or_die('cat /foo/bar');
        };
        exit_due_to($@) if ($@);
        my $content = slurp('/foo/bar');
        spurt('baz', '/foo/bar', append => 1);

# DESCRIPTION

This module contains common utility methods used by Footprintless.

# FUNCTIONS

## agent()

Returns a new instance of `LWP::UserAgent` configured with `env_proxy`.

## clean($paths, %options)

Removes all the entries in `$paths` (must be an array ref). If an entry ends with a `/` it is assumed to be a directory, and will be recreated.

## default_command_runner()

Returns a new instance of the default implementation of `Footprintless::CommandRunner`.

## dumper(@to_dump)

Prints a dump of `@to_dump` using `Data::Dumper` with `Data::Dumper::Indent` set to 1.

## exit_due_to($reason, $verbose)

If `$reason` is an instance of Footprintless::CommandRunner::ExecutionException, `$reason->exit()` will be called. Otherwise, `$reason` will be printed to `STDERR` and `exit(255)` will be called. The `$verbose` argument will be passed on thusly: `$reason->exit($verbose)`.

## extract($archive, %options)

Will extract `$archive`. Will attempt to use Archive::Extract::Libarchive and if not found, will use Archive::Extract. The available options are:

to

  The location to extract to. Defaults to cwd.

type

  The type of the archive. If not specified, the type will be inferred by the file extension according to Lib::Archive. The following additional extensions will be inferred as type `zip`: `ear`, `jar`, `twbx`, `war`.

## factory($entities, %options)

Creates a new Footprintless::Factory. `$entities` can be either, a hashref, or a Config::Entities object. If a hashref, it will be used to create a new entities object, then passed along with options to the `Footprintless::Factory` constructor.

## invalid_entity($message, $coordinate)

Dies with an instance of Footprintless::InvalidEntityException.

## rebase($path, \%rebase)

Replaces a portion of the start of `$path`. `\%rebase` must have 2 keys, `from` and `to`. The `from` value will be removed from `$path` and replaced with the `to` value.

## resource_manager($agent)

Returns a new instance of `Footprintless::ResourceManager` configured with a maven provider if `Maven::Agent` is available, and a url provider in that order. If `$agent` is provided, it will be passed on to the providers.

## slurp($file)

Reads the entire contents of `$file` in one gulp.

## spurt($content, $file, %options)

Writes `$content` to `$file`. The available options are:

## temp_dir()

Creates a new temporary directory with `safe_level` set to `HIGH`. Returns the new File::Temp object.

append

  If truthy, `$content` will be appended to `$file` instead of overwriting.

# AUTHOR

Lucas Theisen <lucastheisen@pastdev.com>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Lucas Theisen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

# SEE ALSO

Please see those modules/websites for more information related to this module.

- Footprintless