mirror of https://github.com/tLDP/LDP
346 lines
7.5 KiB
Bash
Executable File
346 lines
7.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# (P) & (C) 2003-2016 by Dr. Peter Bieringer <pb@bieringer.de>
|
|
#
|
|
# Generator script
|
|
#
|
|
# $Id$
|
|
#
|
|
# Requires: htmldoc recode docbook-utils-pdf
|
|
#
|
|
# Changelog
|
|
#
|
|
# 20020117/PB: review
|
|
# 20020128/PB: change PDF generation to LDP conform one, PS is still not LDP conform
|
|
# 20070401/PB: disable sgmlfixer (no longer needed)
|
|
# add support for XML file, replace nsgmls by onsgmls
|
|
# 20090214/PB: remove </?dummy> tag from SGML, onsgmls don't like it
|
|
# 20090523/PB: extend required binary check
|
|
# 20091220/PB: catch recode problem
|
|
# 20110508/PB: force UTF-8 as input format to fix mixed charset problems in HTML
|
|
# renice whole script
|
|
# support also ldp.dsl stored in same directory as the script
|
|
# 20110509/PB: add charset meta header on each html page to force UTF-8
|
|
# 20161215/PB: remove VGWort URL appender
|
|
|
|
loglevel=6
|
|
|
|
# parse options
|
|
while getopts "ql:" opt; do
|
|
case $opt in
|
|
q)
|
|
loglevel=4
|
|
;;
|
|
l)
|
|
loglevel=$OPTARG
|
|
echo "INFO : set loglevel to: $loglevel"
|
|
;;
|
|
\?)
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
if [ -z "$1" ]; then
|
|
file_input="Linux+IPv6-HOWTO.sgml"
|
|
#file_input="Linux+IPv6-HOWTO.xml"
|
|
else
|
|
file_input="$1"
|
|
fi
|
|
|
|
if echo "$file_input" | grep -q ".sgml$"; then
|
|
# ok, SGML
|
|
true
|
|
elif echo "$file_input" | grep -q ".xml$"; then
|
|
# ok, XML
|
|
true
|
|
else
|
|
echo "ERR: file is not a SGML/XML file: $file_input"
|
|
exit 1
|
|
fi
|
|
|
|
if head -1 "$file_input" |grep -q DOCTYPE ; then
|
|
doctype="SGML"
|
|
elif head -1 "$file_input" |grep -q "xml version" ; then
|
|
doctype="XML"
|
|
else
|
|
echo "ERR: file is not a SGML file: $file_input"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Used SGML file: $file_input"
|
|
|
|
file_base="${file_input%.*}"
|
|
|
|
ONSGMLS="/usr/bin/onsgmls"
|
|
JADE="/usr/bin/jade"
|
|
DB2PS="/usr/bin/db2ps"
|
|
DB2PDF="/usr/bin/db2pdf"
|
|
LDP_PRINT="/usr/local/bin/ldp_print"
|
|
PS2ASCII="/usr/bin/ps2ascii"
|
|
RECODE="/usr/bin/recode"
|
|
HTMLDOC="/usr/bin/htmldoc"
|
|
|
|
#LDP_PDFPS="yes"
|
|
|
|
checklist_bin="ONSGMLS JADE DB2PS DB2PDF PS2ASCII RECODE HTMLDOC"
|
|
|
|
if [ "$LDP_PDFPS" = "yes" ]; then
|
|
checklist_bin="$checklist_bin LDP_PRINT"
|
|
fi
|
|
|
|
|
|
file_ps="$file_base.ps"
|
|
file_pdf="$file_base.pdf"
|
|
file_txt="$file_base.txt"
|
|
file_html="$file_base.html"
|
|
|
|
file_ldpdsl="/usr/local/share/sgml/dsssl/ldp.dsl"
|
|
if [ ! -f $file_ldpdsl ]; then
|
|
# try local stored one
|
|
file_ldpdsl="`dirname $0`"
|
|
if [ "$file_ldpdsl" = "." ]; then
|
|
file_ldpdsl="`pwd`"
|
|
fi
|
|
file_ldpdsl="$file_ldpdsl/ldp.dsl"
|
|
fi
|
|
|
|
file_xmldcl="/usr/share/sgml/xml.dcl"
|
|
dir_dssslstylesheets="/usr/share/sgml/docbook/dsssl-stylesheets"
|
|
|
|
if [ ! -f "$file_ldpdsl" ]; then
|
|
echo "ERR: Missing DSL file: $file_ldpdsl"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ ! -f $file_input ]; then
|
|
echo "ERR: Missing SGML file, perhaps export DocBook of LyX won't work"
|
|
exit 1
|
|
fi
|
|
|
|
# look for required files
|
|
for f in $file_ldpdsl $file_xmldcl; do
|
|
if [ ! -e $f ]; then
|
|
echo "Missing file: $f"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# look for required binaries
|
|
for name in $checklist_bin; do
|
|
f="${!name}"
|
|
|
|
if [ ! -e $f ]; then
|
|
echo "Missing file: $f ($name)"
|
|
exit 1
|
|
fi
|
|
if [ ! -x $f ]; then
|
|
echo "Cannot executue: $f ($name)"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# run sgmlfix
|
|
#if [ -e ./runsgmlfix.sh ]; then
|
|
# ./runsgmlfix.sh "$file_input"
|
|
#else
|
|
# echo "WARN: cannot execute 'runsgmlfix.sh'"
|
|
#fi
|
|
|
|
export SP_ENCODING=UTF-8
|
|
export SP_CHARSET_FIXED=yes
|
|
|
|
## Functions
|
|
validate_sgml() {
|
|
# remove tags <dummy>, </dummy>
|
|
perl -pi -e 's|</?dummy>||g' "$file_input"
|
|
|
|
echo "INFO : Validate SGML/XML code '$file_input'"
|
|
if [ "$doctype" = "XML" ]; then
|
|
local options="$file_xmldcl"
|
|
fi
|
|
[ $loglevel -ge 7 ] && set -x
|
|
|
|
$ONSGMLS -s $options $file_input
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
if [ $retval -gt 0 ]; then
|
|
echo "ERR: Validation results in errors!"
|
|
return 1
|
|
else
|
|
echo "INFO : Validation was successfully"
|
|
fi
|
|
}
|
|
|
|
create_html_multipage() {
|
|
echo "INFO : Create HTML multipages"
|
|
if [ ! -d "$file_base" ]; then
|
|
mkdir "$file_base" || exit 1
|
|
fi
|
|
pushd "$file_base" >/dev/null || exit 1
|
|
rm -f *
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$JADE -t sgml -i html -D $dir_dssslstylesheets -d "${file_ldpdsl}#html" ../$file_input
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
|
|
perl -pi -e 's#><META#><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"\n><META#o' *.html
|
|
local r=$?
|
|
if [ $r -ne 0 ]; then
|
|
retval=$?
|
|
fi
|
|
|
|
popd >/dev/null
|
|
return $retval
|
|
}
|
|
|
|
create_html_singlepage() {
|
|
echo "INFO : Create HTML singlepage '$file_html' from '$file_input'"
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$JADE -t sgml -i html -V nochunks -d "${file_ldpdsl}#html" $file_input >$file_html
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
|
|
perl -pi -e 's#><META#><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"\n><META#o' $file_html
|
|
local r=$?
|
|
if [ $r -ne 0 ]; then
|
|
retval=$?
|
|
fi
|
|
|
|
if [ $retval -eq 0 ]; then
|
|
echo "INFO : Create HTML singlepage - done"
|
|
else
|
|
echo "ERR: Create HTML singlepage - an error occurs!"
|
|
fi
|
|
return $retval
|
|
}
|
|
|
|
create_rtf() {
|
|
echo "INFO : Create RTF file '$file_rtf'"
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$JADE -t rtf -d ${file_ldpdsl} $file_input
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
if [ $retval -eq 0 ]; then
|
|
echo "INFO : Create RTF file - done"
|
|
else
|
|
echo "ERR: Create RTF file - an error occurs!"
|
|
fi
|
|
return $retval
|
|
}
|
|
|
|
create_ps() {
|
|
echo "INFO : Create PS file '$file_ps'"
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$DB2PS --dsl ${file_ldpdsl} $file_input
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
if [ $retval -eq 0 ]; then
|
|
echo "INFO : Create PS file - done"
|
|
else
|
|
echo "ERR: Create PS file - an error occurs!"
|
|
fi
|
|
return $retval
|
|
}
|
|
|
|
create_pdf() {
|
|
if [ "$LDP_PDFPS" = "yes" ]; then
|
|
# Use LDP conform mechanism
|
|
echo "INFO : Create PDF file (LDP conform) '$file_pdf' from HTML file '$file_html'"
|
|
|
|
if [ $file_html -ot $file_input ]; then
|
|
echo "ERR: Create PDF file - needed single page HTML file '$file_html' is older than original '$file_input'"
|
|
return 1
|
|
fi
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$LDP_PRINT $file_html
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
else
|
|
echo "INFO : Create PDF file (NOT LDP conform) '$file_pdf'"
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$DB2PDF --dsl ${file_ldpdsl} $file_input
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
fi
|
|
if [ $retval -eq 0 ]; then
|
|
echo "INFO : Create PDF file - done"
|
|
else
|
|
echo "ERR: Create PDF file - an error occurs!"
|
|
fi
|
|
return $retval
|
|
}
|
|
|
|
create_txt() {
|
|
echo "INFO : Create TXT file '$file_txt' from PS file '$file_ps'"
|
|
[ -f $file_txt ] && rm $file_txt
|
|
if [ -f $file_ps ]; then
|
|
echo "INFO : Create TXT file '$file_txt'"
|
|
[ $loglevel -ge 7 ] && set -x
|
|
$PS2ASCII $file_ps > $file_txt
|
|
local retval=$?
|
|
[ $loglevel -ge 7 ] && set +x
|
|
else
|
|
echo "ERR: Cannot create TXT because of missing PS file"
|
|
fi
|
|
if [ $retval -eq 0 ]; then
|
|
echo "INFO : Create TXT file - done"
|
|
else
|
|
echo "ERR: Create TXT file - an error occurs!"
|
|
fi
|
|
return $retval
|
|
}
|
|
|
|
### Main
|
|
validate_sgml
|
|
[ $? -ne 0 ] && exit 1
|
|
|
|
create_html_multipage
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR : create_html_multipage was not successful"
|
|
exit 1
|
|
fi
|
|
|
|
create_html_singlepage
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR : create_html_singlepage was not successful"
|
|
exit 1
|
|
fi
|
|
|
|
create_pdf
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR : create_pdf was not successful"
|
|
exit 1
|
|
fi
|
|
|
|
#create_ps
|
|
#[ $? -ne 0 ] && exit 1
|
|
|
|
#create_txt
|
|
#[ $? -ne 0 ] && exit 1
|
|
|
|
#create_rtf
|
|
#[ $? -ne 0 ] && exit 1
|
|
|
|
## Add VGWort URL
|
|
#if [ -x ./adjust-html-vgwort.sh ]; then
|
|
# case $file_input in
|
|
# 'Linux+IPv6-HOWTO.sgml')
|
|
# echo "NOTICE: add vgwort URL"
|
|
# ./adjust-html-vgwort.sh en
|
|
# ;;
|
|
# 'Linux+IPv6-HOWTO.de.sgml')
|
|
# echo "NOTICE: add vgwort URL"
|
|
# ./adjust-html-vgwort.sh de
|
|
# ;;
|
|
# esac
|
|
#else
|
|
# echo "NOTICE : can't add vgwort URL (missing adjust-html-vgwort.sh)"
|
|
#fi
|
|
|
|
|
|
exit 0
|