#!/usr/bin/env perl6

use v6.c;

use Pod::To::Text;

use Lingua::Lipogram;

multi MAIN(*@item, Str :l(:$letters), Bool :f(:$files)) {
    without $letters {
        say 'No letters given!';
        exit 1;
    }
    if $files {
        my @status = map {lipogram(.IO, $letters)}, @item;
        exit +!all(@status);
    } else {
        exit +!lipogram(@item.join(' '), $letters);
    }
}

multi MAIN(Bool :h(:$help)) {
    say pod2text($=pod);
}

multi MAIN(Bool :V(:$version)) {
    say "Author:  " ~ Lingua::Lipogram.^auth;
    say "Version: " ~ Lingua::Lipogram.^ver;
}

=begin pod

=head1 NAME

lipogram - Check whether words form a lipogram

=head1 SYNOPSIS

The exit status is 0 if the given words form a lipogram, nonzero otherwise.

Usage:
    lipogram [-l|--letters=<Str>] [-f|--files] [<item> ...]

    lipogram [-h|--help]
    lipogram [-V|--version]

Examples:

    lipogram --letters=s The quick brown fox jumped over the lazy dog.
    lipogram --letters=s --files fox.txt

=end pod
