package Alien::OpenVcdiff;

our $VERSION = '0.101';

use parent 'Alien::Base';

use strict;

sub vcdiff_binary {
  my $dist_dir = Alien::OpenVcdiff->dist_dir();

  ## Installed in distribution auto/
  my $file = $dist_dir . '/bin/vcdiff';
  return $file if -f $file && -x $file;

  ## Built locally
  $file = $dist_dir . '/vcdiff';
  return $file if -f $file && -x $file;

  die "Unable to find vcdiff binary in " . $dist_dir;



=head1 NAME

Alien::OpenVcdiff - Build and install Google's open-vcdiff delta encoding library


=head2 Command-line utility

    use Alien::OpenVcdiff;

    say Alien::OpenVcdiff::vcdiff_binary();
    ## /usr/local/share/perl/5.16.2/auto/share/dist/Alien-OpenVcdiff/bin/vcdiff

    system(Alien::OpenVcdiff::vcdiff_binary() . " encode -dictionary file1 -target file2 -json");

=head2 Library interface

    my $openvcdiff = Alien::OpenVcdiff->new;

    my $cflags = $openvcdiff->cflags;
    ## "-I/usr/local/share/perl/5.16.2/auto/share/dist/Alien-OpenVcdiff/include/google"

    my $libs = $openvcdiff->libs;
    ## "-L/usr/local/share/perl/5.16.2/auto/share/dist/Alien-OpenVcdiff/lib -lvcdcom -lvcddec -lvcdenc"

The above methods are inherited from L<Alien::Base> which has worked really well so far except with C<$cflags> I found I had to strip the "google" off the end of the include directory.


This package configures, builds, and installs Google's L<open-vcdiff|>. This library and its associated command-line utility C<vcdiff> implement L<RFC 3284|>, "The VCDIFF Generic Differencing and Compression Data Format". This RFC specifies a file format for delta encoding and can be thought of as a diff/patch equivalent for binary data (or any kind of data really).

The C<vcdiff> command-line utility binary's location can be found by calling C<Alien::OpenVcdiff::vcdiff_binary()> after the package has been loaded.

Although the binary might come in handy sometimes, the primary purpose of this module is to install the C<> and C<> shared libraries so that they can be used by the L<Vcdiff::OpenVcdiff> module. Nothing from C<open-vcdiff> is installed globally -- it's all contained in the perl auto directory.

=head1 SEE ALSO

L<Alien-OpenVcdiff github repo|>




=head1 AUTHOR

Doug Hoyte, C<< <> >>


Copyright 2013 Doug Hoyte.

This module includes open-vcdiff which is copyright Google Inc and Lincoln Smith. open-vcdiff is licensed under the Apache 2.0 license which can be found in the included open-vcdiff distribution.

This module is licensed under the same terms as perl itself or under the Apache 2.0 license, whichever you prefer.