40 lines
1.3 KiB
Perl
40 lines
1.3 KiB
Perl
# This code was forked from the LiveJournal project owned and operated
|
|
# by Live Journal, Inc. The code has been modified and expanded by
|
|
# Dreamwidth Studios, LLC. These files were originally licensed under
|
|
# the terms of the license supplied by Live Journal, Inc, which can
|
|
# currently be found at:
|
|
#
|
|
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
|
|
#
|
|
# In accordance with the original license, this code and all its
|
|
# modifications are provided under the GNU General Public License.
|
|
# A copy of that license can be found in the LICENSE file included as
|
|
# part of this distribution.
|
|
|
|
package LJ::TempDir;
|
|
|
|
# little OO-wrapper around File::Temp::tempdir, so when object
|
|
# DESTROYs, things get cleaned.
|
|
|
|
use strict;
|
|
use File::Temp ();
|
|
use File::Path ();
|
|
|
|
# returns either $obj or ($obj->dir, $obj), when in list context.
|
|
# when $obj goes out of scope, all temp directory contents are wiped.
|
|
sub new {
|
|
my ($class) = @_;
|
|
my $dir = File::Temp::tempdir()
|
|
or die "Failed to create temp directory: $!\n";
|
|
my $obj = bless { dir => $dir, }, $class;
|
|
return wantarray ? ( $dir, $obj ) : $obj;
|
|
}
|
|
|
|
sub directory { $_[0]{dir} }
|
|
|
|
sub DESTROY {
|
|
my $self = shift;
|
|
File::Path::rmtree( $self->{dir} ) if $self->{dir} && -d $self->{dir};
|
|
}
|
|
|
|
1;
|