VCI::Abstract::File - A single file in the repository.


VCI documentation Contained in the VCI distribution.

Index


Code Index:

NAME

Top

VCI::Abstract::File - A single file in the repository.

DESCRIPTION

Top

This represents a file in the repository. It implements VCI::Abstract::Committable, so all of those methods are available on a File in addition to the methods listed below.

METHODS

Top

Accessors

These are methods you call to get information about a File. They are all read-only--you cannot update a File's information using this interface.

content

Returns the content of this file as a string, according to its specified "revision".

content_size

The size of the File's content, in bytes.

is_executable

1 if this file is tagged as an executable by the VCS, 0 if it is not. If the VCS doesn't track this info, this returns undef.

CLASS METHODS

Top

Constructors

Usually you won't construct an instance of this class directly, but instead, use various methods of other modules that create File objects by interacting with the Project.

new

Takes all Accessors of this class and VCI::Abstract::Committable, as named parameters. The following fields are required: path and project.

If you don't specify revision, VCI assumes you want an object representing the "latest" or "HEAD" revision of this File.


VCI documentation Contained in the VCI distribution.

package VCI::Abstract::File;
use Moose;

with 'VCI::Abstract::Committable';

has 'is_executable' => (is => 'ro', isa => 'Bool', lazy_build => 1);
has 'content' => (is => 'ro', isa => 'Str', lazy_build => 1);
has 'content_size' => (is => 'ro', isa => 'Int', lazy_build => 1);

# Because composed roles don't call BUILD, this is in all objects that
# implment Committable.
sub BUILD { shift->_no_time_without_revision; }

sub _build_content_size { return length(shift->content) }

__PACKAGE__->meta->make_immutable;

1;

__END__