Dist::Zilla::Role::Tempdir(3)

NAME
Dist::Zilla::Role::Tempdir - Shell Out and collect the result in a DZ plug-in.

VERSION
version 0.01053721

SYNOPSIS
  package #
    Dist::Zilla::Plugin::FooBar;

  use Moose;
  with 'Dist::Zilla::Role::Tempdir';
  with 'Dist::Zilla::Role::FileInjector';
  with 'Dist::Zilla::Role::InstallTool';

  sub setup_installer {
    my ( $self, $arg ) = @_ ;

    my ( @generated_files ) = $self->capture_tempdir(sub{
      system( $somecommand );
    });

    for ( @generated_files ) {
      if( $_->is_new && $_->name =~ qr/someregex/ ){
        $self->add_file( $_->file );
      }
    }
  }

This role is a convenience role for factoring into other plug-ins to use the power of Unix in any plug-in.

If for whatever reason you need to shell out and run your own app that is not Perl ( i.e.: Java ) to go through the code and make modifications, produce documentation, etc, then this role is for you.

Important to note however, this role ONLY deals with getting "Dist::Zilla"'s state written out to disk, executing your given arbitrary code, and then collecting the results. At no point does it attempt to re-inject those changes back into "Dist::Zilla". That is left as an exercise to the plug-in developer.

METHODS

  capture_tempdir
Creates a File::Tempdir and dumps the current state of Dist::Zilla's files into it.

Runs the specified code sub "chdir"'ed into that "tmpdir", and captures the changed files.

  my ( @array ) = $self->capture_tempdir(sub{

  });

Response is an array of "::Tempdir::Item"

   [ bless( { name => 'file/Name/Here' ,
      status => 'O' # O = Original, N = New, M = Modified, D = Deleted
      file   => Dist::Zilla::Role::File object
    }, 'Dist::Zilla::Tempdir::Item' ) , bless ( ... ) ..... ]

Make sure to look at "Dist::Zilla::Tempdir::Item" for usage.

  digest_for
  my $hash = $self->digest_for( \$content );

Hashes content and returns the result in b64.

PRIVATE ATTRIBUTES

  _digester
  isa => Digest::base,
  is  => rw,
  lazy_build => 1

Used for Digesting the contents of files.

PRIVATE METHODS

  _build__digester
returns an instance of Digest::SHA with 512bit hashes.

SEE ALSO

•   "Dist::Zilla::Tempdir::Item"

AUTHOR
Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Kent Fredric.

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