#! /bin/sh -e

PROGRAM=lr_xml2dbx

# dereference sysconfdir's prefix dependency
prefix="/usr"
etcdir="/etc/lire"

. $etcdir/profile_lean

tag="all all ${LR_ID:-UNSET} $PROGRAM"

echo >&2 "$tag info started with $*"

if test $# -lt 1
then
  echo >&2 "$tag err expecting argument. syntax: $PROGRAM [-i] report.xml"
  exit 1
fi

images=
while getopts :i a
do
    case $a in
    i)
        images="-i"
        ;;
    *)
        echo >&2 "$tag err usage $PROGRAM [-i] report.xml"
        exit 1
        ;;
    esac
done
shift `expr $OPTIND - 1 || true`

file="$1"

if test ! -r "$file"
then
  echo >&2 "$tag err file '$file' is not readable."
  exit 1
fi

lr_check_prereq $images docbookx || exit 1

# get global vars
prefix="/usr"
datadir="${prefix}/share/lire"
etcdir="/etc/lire"
exec_prefix="${prefix}"
libexecdir="/usr/lib/lire"
PACKAGE="lire"
. $etcdir/defaults

DOCBOOKXSL="$datadir/xml/stylesheet/xsl/docbook.xsl"

if test ! -d "$TMPDIR"
then
    echo >&2 "$tag notice dir $TMPDIR does not exist, creating it"
    if mkdir "$TMPDIR"
    then
        :
    else
        echo >&2 "$tag err cannot create $TMPDIR, exiting!"
        exit 1
    fi
fi

tmpreportdir="$TMPDIR/$PROGRAM.$$"
echo >&2 "$tag debug creating temporary report dir $tmpreportdir"
if mkdir $tmpreportdir
then
    :
else
    echo >&2 "$tag err failed to create $tmpreportdir"
    exit 1
fi

xmlfile="$TMPDIR/$PROGRAM.all.$$.xml"
if test -n "$images"
then
    lr_xml2chart -o $tmpreportdir < $file > $xmlfile
else
    cp $file $xmlfile
fi

# convert lire xml to dbx
dbxfile="$tmpreportdir/$PROGRAM.all.$$.dbx"
echo >&2 "$tag info converting $file to $dbxfile"
lr_xslt $DOCBOOKXSL $xmlfile "userlevel='${LR_USERLEVEL:-normal}'" > $dbxfile

# Give output
if test -n "$images"
then
    mkdir $tmpreportdir/report
    reportdbx=$tmpreportdir/report/report.dbx
    mv $dbxfile $reportdbx
    if ls -- $tmpreportdir/*.png > /dev/null 2>&1
    then
        # png's were created
        mv $tmpreportdir/*.png $tmpreportdir/report/
    else
        echo >&2 "$tag warning no images were created. i'll go ahead anyway."
    fi

    # invoke in a sub-shell, in order to not rely on execute permission on
    # cwd when starting this script.
    ( cd $tmpreportdir && $LR_TAR cf - report )

else
    cat $dbxfile
fi

# clean temp
if test -n "$LR_KEEP"
then
    echo >&2 "$tag notice keeping temporary files in $tmpreportdir on your request. remove manually"
else
    rm -fr $tmpreportdir $xmlfile
fi

echo >&2 "$tag info stopped"

exit 0


POD=<<'EOPOD'

=pod

=head1 NAME

lr_xml2dbx - generate a DocBook XML report from a raw XML report

=head1 SYNOPSIS

B<lr_xml2dbx> B<[options]> I<file>

=head1 OPTIONS

=over 4

=item B<-i>

Generate charts of subreport which have the I<charttype> attribute
defined, by running lr_xml2chart(1).

=back

=head1 DESCRIPTION

B<lr_xml2dbx> reads a raw xml report from file I<file>, and prints a a
DocBook XML report on STDOUT. It uses the LR_ID environment variable
in debug messages it prints to STDOUT. It expects to find
lr_xml2chart(1) in it's PATH.

When used with the B<-i> option, B<lr_xml2dbx> will output on stdout a
tar file. This tar file contains a F<report/> directory with a DocBook
XML report called F<report.dbx> and the charts in PNG format.

DocBook XML reports can then be typesets using customized stylesheets
to typeset the reports with logo or other required layouts.

=head1 SEE ALSO

lr_dlf2xml(1), lr_xml2ascii(1), lr_dlf2pdf(1)

=head1 VERSION

$Id: lr_xml2dbx.in,v 1.10 2003/01/12 21:50:11 vanbaal Exp $

=head1 COPYRIGHT

Copyright (C) 2000, 2001 Stichting LogReport Foundation LogReport@LogReport.org

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program (see COPYING); if not, check with
http://www.gnu.org/copyleft/gpl.html or write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.

=head1 AUTHOR

Francis J. Lacoste <flacoste@logreport.org>

=cut

EOPOD


