package VCS::Lite::Common; use 5.006; use strict; use warnings; our $VERSION = '0.04'; our $username = $ENV{VCSLITE_USER} || $ENV{USER}; our $default_store = 'Storable'; use File::Spec::Functions qw(splitpath splitdir); sub path { my $self = shift; return $self->{path} unless @_; my $newpath = shift; if ($self->{path} ne $newpath) { $self->{path} = $newpath; $self->save; } } sub name { my $self = shift; my ($vol, $dir, $fil) = splitpath($self->path); $fil || (splitdir $dir)[-1]; } sub store { my $self = shift; $self->{store}; } sub save { my ($self) = @_; $self->store->save($self); } sub _mumble { my ($self,$msg) = @_; print $msg,"\n" if exists($self->{verbose}) && $self->{verbose}; } sub latest { my ($self,$base) = @_; $base .= '.' if $base && $base =~ /\d$/; $base ||= ''; return 0 if !exists($self->{latest}); $self->{latest}{$base} || 0; } sub up_generation { my ($self,$gen) = @_; $gen =~ s/\.0$// or $gen =~ s/([1-9]\d*)$/$1-1/e or return undef; $gen; } sub user { my $obj = shift; @_ ? ($username = shift) : $username; } sub default_store { my $obj = shift; @_ ? ($default_store = shift) : $default_store; } sub parent { my $self = shift; return undef unless exists $self->{parent}; $self->{parent_store}->retrieve($self->{parent}); } 1;