#!/usr/bin/perl
use strict;
use File::Basename;
use Getopt::Long    qw(:config no_auto_abbrev no_ignore_case);
use WWW::ColiPoste;


$::PROGRAM = basename($0);
$::VERSION = WWW::ColiPoste->VERSION;

MAIN: {
    run() unless caller();
}


sub run {
    my %options = ();

    # process command-line options
    GetOptions(\%options, qw{
        help|h!  version|V!
        from|f=s
    }) or pod2usage(1);

    # handle --help and --version
    $options{help}    and pod2usage(2);
    $options{version} and print "$::PROGRAM v$::VERSION\n" and exit;

    my $coliposte = WWW::ColiPoste->new;

    push my @args, from => $options{from} if $options{from};

    for my $id (@ARGV) {
        my $status = $coliposte->get_status(tracking_id => $id, @args);

        print "tracking log for shipment #$id:\n";
        for my $line (@$status) {
            print join(": ", map { $line->{$_} } qw(date site status) ), $/
        }

        print $/ if @ARGV > 1;
    }
}

sub pod2usage {
    my ($level) = @_;
    require Pod::Usage;
    Pod::Usage::pod2usage({ -exitval => 0, -verbose => $level, -noperldoc => 1 });
}


1

__END__

=head1 NAME

coliposte - Fetch and print shipping status from ColiPoste

=head1 SYNOPSIS

    coliposte <tracking ID> ...

    coliposte --help
    coliposte --version

=head1 OPTIONS

=over

=item B<-f>, B<--from> I<tmpl-uri>

Use the given template URI.

=item B<-h>, B<--help>

Prints this help screen, then exits.

=item B<-V>, B<--version>

Prints the program name and version, then exits.

=back


=head1 DESCRIPTION

This program is a simple command-line interface to C<WWW::ColiPoste>. 
It expects shipping IDs as arguments, and prints the correspond 
tracking logs. 


=head1 AUTHOR

SE<eacute>bastien Aperghis-Tramoni, C<< <sebastien at aperghis.net> >>

=head1 BUGS

Please report any bugs or feature requests 
to C<bug-www-coliposte at rt.cpan.org>, or through the web interface 
at L<http://rt.cpan.org/Public/Dist/Display.html?Name=WWW-ColiPoste>. 
I will be notified, and then you'll automatically be notified of 
progress on your bug as I make changes.


=head1 SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc WWW::ColiPoste

You can also look for information at:

=over

=item * 

RT CPAN's request tracker:
L<http://rt.cpan.org/Public/Dist/Display.html?Name=WWW-ColiPoste>

=item *

AnnoCPAN: Annotated CPAN documentation:
L<http://annocpan.org/dist/WWW-ColiPoste>

=item *

CPAN Ratings:
L<http://cpanratings.perl.org/d/WWW-ColiPoste>

=item *

Search CPAN:
L<http://search.cpan.org/dist/WWW-ColiPoste>

=item *

Kobes Search:
L<http://cpan.uwinnipeg.ca/dist/WWW-ColiPoste>

=back


=head1 COPYRIGHT & LICENSE

Copyright 2008 SE<eacute>bastien Aperghis-Tramoni, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut
