File::Tasks::Add - A File::Tasks task to add a new file


File-Tasks documentation Contained in the File-Tasks distribution.

Index


Code Index:

NAME

Top

File::Tasks::Add - A File::Tasks task to add a new file

DESCRIPTION

Top

Objects of this class represent the addition of a new file to the filesystem. Specifically, they mean the creation of a new file where no existing file should exist.

Thus, when applying the task to a filesystem, it is first checked to ensure there is no existing file accidentally in the way.

METHODS

Top

new $Tasks, $path, $source

Creates a new File::Tasks::Add object, although you probably won't be creating this object directly from here.

Returns a new File::Tasks::Add object, or undef on error.

type

Returns the task type, which is always 'Add'.

path

The path accessor returns the path to the file within the set of tasks.

source

The source accessor returns the content source, which could be anything supported by File::Tasks::Provider.

test

The test method checks to see if the file can be added.

Returns true if so, or false if not.

execute

The execute method executes the task on the local filesystem.

Returns true on success or undef on error.

content

The content method returns the content that is to be written to the file.

SUPPORT

Top

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Tasks

For other issues, contact the author.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>, http://ali.as/

COPYRIGHT

Top


File-Tasks documentation Contained in the File-Tasks distribution.

package File::Tasks::Add;

# See POD at end for docs

use strict;
use base 'File::Tasks::Task';
use File::Flat   ();
use Params::Util '_INSTANCE';

use vars qw{$VERSION};
BEGIN {
	$VERSION = '0.07';	
}





#####################################################################
# Constructor and Accessors

sub new {
	my $class = shift;
	my $self  = $class->SUPER::new(@_) or return undef;

	# Check the content source
	my $Script = _INSTANCE(shift, 'File::Tasks') or return undef;
	$self->{source} = $Script->provider->compatible(shift) or return undef;

	$self;
}

sub source  { $_[0]->{source} }





#####################################################################
# File::Tasks::Task

sub type { 'Add' }

sub test {
	File::Flat->canWrite( shift->path );
}

sub content {
	my $self = shift;
	$self->provider->content( $self->source );
}

sub execute {
	my $self    = shift;
	my $content = $self->content or return undef;
	File::Flat->write( $self->path, $content );
}

1;

__END__