Symlink-DSL
view release on metacpan or search on metacpan
lib/Symlink/DSL.pm view on Meta::CPAN
}
chdir $pwd;
return;
}
sub manifest_exists
{
my $self = shift;
return ( -f $self->manifest );
}
sub process_manifest
{
my $self = shift;
die "Manifest does not exist" if !$self->manifest_exists;
open my $fh, "<", $self->manifest;
while ( my $l = <$fh> )
{
chomp $l;
$self->handle_line( { line => $l } );
}
close $fh;
return 1;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Symlink::DSL - a domain-specific language for setting up symbolic links.
=head1 VERSION
version 0.4.0
=head1 SYNOPSIS
use Symlink::DSL;
my $dir = "$ENV{HOME}/conf/trunk/shlomif-settings/home-bin-executables";
my $skip_re = undef;
my $processor = Symlink::DSL->new( { dir => $dir, skip_re => $skip_re, } );
$processor->process_manifest;
And in C<< setup.symlinks.manifest.txt >>:
symlink from ~/bin/80_chars_ruler to ./bin/80_chars_ruler
symlink from ~/bin/SPECS-only-for-deps-co to ./bin/SPECS-only-for-deps-co
symlink from ~/bin/backup-slash.bash to ./bin/backup-slash.bash
symlink from ~/bin/commify to ./bin/commify
symlink from ~/bin/desktop-finish-cue to ./bin/desktop-finish-cue
symlink from ~/bin/git-com to ./bin/git-com
symlink from ~/bin/git-mkdir to ./bin/git-mkdir
symlink from ~/bin/git-s to ./bin/git-s
symlink from ~/bin/mplayer-shuffle to ./bin/mplayer-shuffle
symlink from ~/bin/sus to ./bin/sus
symlink from ~/bin/tail-extract to ./bin/tail-extract
=head1 DESCRIPTION
Symlink::DSL implements a domain-specific language for setting up symbolic
links (e.g: to dot files and other resources). For example, one
can write:
symlink from ~/bin/80_chars_ruler to ./bin/80_chars_ruler
symlink from ~/bin/backup-slash.bash to ./bin/backup-slash.bash
=head1 METHODS
=head2 Symlink::DSL->new({dir => $path2dir, skip_re=> $regexp})
Returns a new object.
Accepts:
=over 4
=item * dir
The directory path which contains the manifest file.
=item * skip_re
A regular expression that will skip checking existing links.
=item * manifest_base
The basename of the manifest file. Defaults to C<< setup.symlinks.manifest.txt >> . (Added in 0.2.0).
=back
=head2 $obj->dir()
Returns the directory path.
=head2 $obj->handle_line({line => $line_string})
Handles a single line.
=head2 $obj->manifest_base()
Returns the basename of the manifest files. Can be set in new() .
(Added in 0.2.0 .)
=head2 $obj->manifest()
Returns the manifest path.
=head2 $obj->manifest_exists()
( run in 1.022 second using v1.01-cache-2.11-cpan-2398b32b56e )