#!/usr/bin/perl -w

use strict;
use utf8;
use warnings;

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

use Dbase::Getopt qw(:DEFAULT);
use Dbase::Ticket;
use Loader qw(process_template);

our $Template = \"[% ticket.ticket_number %][% rest %]\n";
GetOptions(
    'format=s'   => sub { ( undef, my $format )   = @_; $Template = \$format },
    'template=s' => sub { ( undef, my $template ) = @_; $Template = $template },
);

{

    # Nur um herauszufinden, welche Attribute pro Ticket benötigt werden, so
    # dass die beim ersten echten Ticket gleich alle auf einmal geladen werden:
    process_template( { ticket => Dbase::Ticket->new }, $Template, \my $dummy );
}

while (<STDIN>) {
    chomp;
    my ( $ticket, $rest ) = /^(\d+)?(.*)?/;
    process_template(
        {
            rest   => $rest,
            ticket => Dbase::Ticket->new( ticket_number => $ticket ),
        },
        $Template,
        \my $output
    );
    $output .= "\n" if ref $Template && $output !~ /\n\z/;
    print $output;
}

__END__

=head1 NAME

get_tickets - Daten zu Tickets ermitteln

=head1 SYNOPSE

    <Ticketliste get_tickets \
	    -format '[% ticket.status %]	[% ticket.ticket_number %]	[% rest %]' |
        egrep -v '^(open|stalled)	'

=head1 BESCHREIBUNG

Das Tool liest zeilenweise von der Standardeingabe.
Jede Zeile sollte mit einer Ticket-Nummer beginnen,
dahinter können optional beliebige Daten folgen.

Es gibt dann das Ergebnis der Verarbeitung eines Templates (vgl. unten) aus,
dem ein zur Ticket-Nummer passendes C<ticket>-Objekt sowie der Rest der Zeile
in der Variable C<rest> übergeben wird.
Über das Ticket-Objekt können beliebige Attribute des Tickets abgefragt
werden, soweit sie von der L<noris::Ticket::API> unterstützt werden.
Sollte eine Zeile nicht mit einer Ticket-Nummer beginnen, so liefert das
Ticket-Objekt für alle Attribute L<undef|perlfunc/undef>.

=head1 OPTIONEN

=over 4

=item -format Template-Daten

=item -template Template-Datei

zur Festlegung des Ausgabeformats, wahlweise direkt auf der Kommandozeile
bzw. indirekt über eine Template-Datei.
Default: C<[% ticket.ticket_number %][% rest %]>,
sprich die eingelesenen Daten werden praktisch unverändert wieder ausgegeben.

=item -help

=item -?

um (nur) diese Dokumentation anzeigen zu lassen

=back

