NAME

Dist::Zilla::Tempdir::Dir - A temporary directory with a collection of item states

VERSION

version 1.001003

SYNOPSIS

my $dir = Dist::Zilla::Tempdir::Dir->new();
$dir->add_file( $zilla_file );
$dir->run_in(sub {  });
$dir->update_input_files;
$dir->update_disk_files;

my @file_states = $dir->files();

METHODS

files

Returns a list of Dist::Zilla::Tempdir::Item

add_file

$dir->add_file( $dzil_file );

Adds $dzil_file to the named temporary directory, written out to disk, and records it internally as an "original" file.

update_input_file

$dir->update_input_file( $dzil_file );

Refreshes the $dzil_file from its written out context, determining if that file has been changed since addition or not, recording the relevant data for ->files

update_disk_file

$dir->update_disk_file( $disk_path );

Assume $disk_path is a path of a NEW file and record it in ->files

update_input_files

$dir->update_input_files

Refresh the state of all written out files and record them ready for ->files

update_disk_files

$dir->update_disk_files

Scan the temporary directory for files that weren't added as an input file, and record their status and information ready for ->files

run_in

my $rval = $dir->run_in(sub {
  return 1;
});

Enter the temporary directory and run the passed code block, which is assumed to be creating/modifying/deleting files.

keepalive

Utility method: Marks the temporary directory for preservation.

$dir->keepalive()  # simply returns the path to the tempdir
$dir->keepalive(1) # mark for retention
$dir->keepalive(0) # mark for erasure

This is mostly an insane glue layer for

$dir->_tempdir->[Path::Tiny::TEMP]->unlink_on_destroy($x)

Except the insanity of poking too many internal guts is well encapsulated.

keepalive_fail

A utility method to invoke a croak (heh) that preserves the scratch directory, and tells the croak recipient where to find it.

$dir->keepalive_fail();
$dir->keepalive_fail("Some Diagnostic Reason");

AUTHOR

Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Kent Fredric <kentfredric@gmail.com>.

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