#!/usr/bin/perl -w

use strict;
use utf8;
use warnings;

BEGIN {
    unshift @INC, ( $ENV{POPHOME} || '@POPHOME@' ) . '/lib'
      unless $ENV{KUNDE_NO_PERLPATH};
}

use Cf qw($DENIC_RRI_SERVER);
use Dbase::Getopt qw(:DEFAULT);
use Dbase::Globals qw(puny_encode sendmail);
use Loader qw(process_template get_recipients_from_header);

use constant HR => ( '-' x 79 ) . "\n";

GetOptions(
    'mail-template=s' => \my $MailTemplate,
    'send-mails!'     => \( my $SendMails = 0 ),
);

die "Wenn du Mails verschicken möchtest musst du auch ein -mail-template angeben!\n"
  if $SendMails && !defined $MailTemplate;

while (<>) {
    # Daten in PunyCode umwandeln
    chomp;
    my $punydomain = puny_encode($_);

    # Ins Template rein
    process_template(
        {
            domain => { realname => $_, punyname => $punydomain },
        },
        $MailTemplate,
        \my $mail
    );

    # und raus die Mail
    my @empfaenger;
    {
        my %known;
        @empfaenger = grep !$known{ +lc }++,
          get_recipients_from_header($mail);
    }

    if ( $SendMails && @empfaenger ) {
        sendmail( $mail, 'domain@noris.net', @empfaenger );
    }
    else { print HR, $mail }
}

__END__

=head1 NAME

beantrage_domains_beim_partnergate - Domainbeantragungstool für Partnergate

=head1 SYNOPSE

  ./finde_freie_de-domains domain_watchlist | beantrage_domains_beim_partnergate \
     -mail-template examples/templates/beantrage_domains_beim_partnergate/default

  echo 'my-domain.de' | beantrage_domains_beim_partnergate \
     -mail-template examples/templates/beantrage_domains_beim_partnergate/default \
     -send-mails

=head1 BESCHREIBUNG

Diese Tool beantragt Domain bei Partnergate. Dabei erhält er eine List mit
freien Domains und verschickt diese per E-Mail an Partnergate

=head1 OPTIONEN

=over 4

=item -template TEMPLATE-DATEI

Template für die E-Mail, die ans Partnergate geschickt wird,
um die Domain zu beantragen.

(Auch) die Empfänger der E-Mail werden über entsprechende Header
in diesem Template festgelegt.

Wird keines angegeben, erfolgt eine Debug-Ausgabe der Daten.

=item -send-mails

Tatsächlich E-mails verschicken.
Wird diese Option gesetzt, muss zwingend ein L</-mail-template|Template>
angegeben werden.

=item -help

=item -?

um (nur) diese Dokumentation anzeigen zu lassen

=back

=head1 AUTOREN

 Stelios Gikas <entwicklung@noris.net>
 Stelios Gikas <10065509@ticket.noris.net>
