_COMMON_VERSIONS=(4.{2..5})
_LEGACY_VERSIONS=({3,4}.{0,1})
XML_VERSIONS=('4.1.2' ${_COMMON_VERSIONS[@]})
SGML_VERSIONS=(${_LEGACY_VERSIONS[@]} ${_COMMON_VERSIONS[@]})

register_schema_xml() {
    abinfo "Registering xml-$1 ..."
    while read f desc; do
        xmlcatalog --noout --add public "$desc" "/usr/share/xml/docbook/$f" "$PKGDIR/usr/share/xml/docbook/xmlcatalog"
    done << EOF
      dbpoolx.mod	-//OASIS//ELEMENTS DocBook XML Information Pool V$1//EN
      docbookx.dtd	-//OASIS//DTD DocBook XML V$1//EN
      dbcentx.mod	-//OASIS//ENTITIES DocBook XML Character Entities V$1//EN
      dbnotnx.mod	-//OASIS//ENTITIES DocBook XML Notations V$1//EN
      dbgenent.mod	-//OASIS//ENTITIES DocBook XML Additional General Entities V$1//EN
      dbhierx.mod	-//OASIS//ELEMENTS DocBook XML Document Hierarchy V$1//EN
      soextblx.dtd	-//OASIS//DTD XML Exchange Table Model 19990315//EN
      calstblx.dtd	-//OASIS//DTD DocBook XML CALS Table Model V$1//EN
EOF
    case "$1" in
        4.[45])
            xmlcatalog --noout --add public "-//OASIS//ELEMENTS DocBook XML HTML Tables V$1//EN" "/usr/share/xml/docbook/$f" "$PKGDIR/usr/share/xml/docbook/xmlcatalog"
    esac
    for f in System URI; do
        xmlcatalog --noout --add "rewrite$f" "http://www.oasis-open.org/docbook/xml/$1" "/usr/share/xml/docbook/xml-dtd-$1" "$PKGDIR/usr/share/xml/docbook/xmlcatalog"
    done
}

register_cat_sgml() {
    abinfo "Registering sgml-$1 ..."
    xmlcatalog --sgml --noout --no-super-update --add "$PKGDIR/etc/sgml/sgml-docbook-$1.cat" "/usr/share/sgml/docbook/sgml-dtd-$1/catalog"
    xmlcatalog --sgml --noout --no-super-update --add "$PKGDIR/etc/sgml/sgml-docbook-$1.cat" "/usr/share/sgml/docbook/sgml-dtd-$1/catalog"
    xmlcatalog --sgml --noout --no-super-update --add "$PKGDIR/etc/sgml/sgml-docbook-$1.cat" "/etc/sgml/sgml-ent.cat"
    xmlcatalog --sgml --noout --no-super-update --add "$PKGDIR/etc/sgml/sgml-docbook-$1.cat" "/etc/sgml/dsssl-docbook-stylesheets.cat"
    xmlcatalog --sgml --noout --no-super-update --add "$PKGDIR/etc/sgml/catalog" "/etc/sgml/sgml-docbook-$1.cat"
}

abinfo 'Preparing XML catalogs ...'
mkdir -pv "$PKGDIR/etc/"{xml,sgml}
mkdir -pv "$PKGDIR/etc/xml/docbook-xml/"
mkdir -pv "$PKGDIR/usr/share/xml/docbook/"
mkdir -pv "$PKGDIR/usr/share/sgml/docbook/"
xmlcatalog --noout --create "$PKGDIR/usr/share/xml/docbook/xmlcatalog"
ln -sv ../../../usr/share/xml/docbook/xmlcatalog "$PKGDIR/etc/xml/docbook-xml/xmlcatalog"

abinfo 'Preparing sources and installation ...'
# XML
for i in ${XML_VERSIONS[@]}; do
    abinfo "Processing $i-xml ..."
    mkdir "$SRCDIR/$i-xml" && cd "$SRCDIR/$i-xml"
    unzip "$SRCDIR/docbook-xml-$i.zip"
    TARGETDIR="$PKGDIR/usr/share/xml/docbook/xml-dtd-$i"
    mkdir -pv "$TARGETDIR/"{ent,catalog}
    # install
    cp -v ent/* "$TARGETDIR/ent"
    cp -v *.dtd *.mod "$TARGETDIR"
    cp -v docbook.cat "$TARGETDIR/catalog/"
    # register schemas
    register_schema_xml "$i"
    cd ..
done
for i in ${SGML_VERSIONS[@]}; do
    abinfo "Processing $i-sgml ..."
    mkdir -v "$SRCDIR/$i-sgml" && cd "$SRCDIR/$i-sgml"
    unzip "$SRCDIR/docbook-$i.zip"
    dos2unix *
    if [ -f "$SRCDIR"/autobuild/dtdpatch/docbook-dtd${i//./}-sgml-1.0.catalog.patch ]; then
        abinfo "Applying Fedora patch ..."
        patch \
            -Np0 -i "$SRCDIR"/autobuild/dtdpatch/docbook-dtd${i//./}-sgml-1.0.catalog.patch
    fi
    TARGETDIR="$PKGDIR/usr/share/sgml/docbook/sgml-dtd-$i"
    mkdir -pv "$TARGETDIR/"
    cp -v *.dcl "$TARGETDIR"
    cp -v *.dtd *.mod "$TARGETDIR"
    cp -v docbook.cat "$TARGETDIR/catalog"
    # register cats
    register_cat_sgml "$i"
    cd ..
done
for i in ${_COMMON_VERSIONS[@]}; do
    # rng
    abinfo "Processing $i-rng ..."
    mkdir "$SRCDIR/$i-rng" && cd "$SRCDIR/$i-rng"
    unzip "$SRCDIR/docbook-rng-$i.zip"
    TARGETDIR="$PKGDIR/usr/share/xml/docbook/rng-$i"
    mkdir -pv "$TARGETDIR"
    cp -v *.r* "$TARGETDIR"
    cd ..
    # xsd
    mkdir "$SRCDIR/$i-xsd" && cd "$SRCDIR/$i-xsd"
    abinfo "Processing $i-xsd ..."
    unzip "$SRCDIR/docbook-xsd-$i.zip"
    TARGETDIR="$PKGDIR/usr/share/xml/docbook/xsd-$i"
    mkdir -pv "$TARGETDIR"
    cp -v *.xsd "$TARGETDIR"
    cd ..
done

# symlinks
mkdir -pv "$PKGDIR/etc/sgml/"
ln -sv "sgml-docbook-4.5.cat" "$PKGDIR/etc/sgml/sgml-docbook.cat"

cd "$PKGDIR"/usr/share/sgml/docbook
ln -sv ../../xml/docbook/xml-* .

# vi: ft=bash
