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 )