#!/bin/sh

## John R. Sheets <jsheets@codeweavers.com>

## This is a convenience script for building the website docs for
## www.winehq.com.  It creates tarballs of the HTML with special
## server-side includes and CSS settings that aren't appropriate for
## the mainline Wine tree.  For this reason, and to make it easier to
## set up an automated website update system, I'm putting this in
## a standalone shell script.
##
## There's no need to invoke the Wine make system just for web
## updates.  For example, we can just grab the documentation
## subdirectory, without having to pull the entire wine tree:
##
## $ cvs co wine/documentation
## $ cd wine/documentation
## $ ./make_winehq
## $ rsync ...

WWWDIR=www.winehq.com
## Want to put this into a sub-directory for easier maintenance
if [ -e $WWWDIR ]; then
  rm -rf $WWWDIR.old
  mv $WWWDIR $WWWDIR.old
fi
mkdir $WWWDIR

## Create four-book HTML tarball
echo "./db2html-winehq wine-user.sgml"
./db2html-winehq wine-user.sgml
echo "./db2html-winehq wine-devel.sgml"
./db2html-winehq wine-devel.sgml
echo "./db2html-winehq winelib-user.sgml"
./db2html-winehq winelib-user.sgml
echo "./db2html-winehq wine-pkg.sgml"
./db2html-winehq wine-pkg.sgml
tar czf winedoc-html.tgz wine-user wine-devel winelib-user wine-pkg
cp winedoc-html.tgz $WWWDIR

## Create one-book HTML tarball
echo "./db2html-winehq wine-doc.sgml"
./db2html-winehq wine-doc.sgml
tar czf wine-set-html.tgz wine-doc
cp wine-set-html.tgz $WWWDIR

## Create PostScript tarball
echo "db2ps wine-user.sgml"
db2ps wine-user.sgml > /dev/null 2>&1
echo "db2ps wine-devel.sgml"
db2ps wine-devel.sgml > /dev/null 2>&1
echo "db2ps winelib-user.sgml"
db2ps winelib-user.sgml > /dev/null 2>&1
echo "db2ps wine-pkg.sgml"
db2ps wine-pkg.sgml > /dev/null 2>&1
tar czf winedoc-ps.tgz wine-user.ps wine-devel.ps winelib-user.ps wine-pkg.ps
cp winedoc-ps.tgz $WWWDIR

## Create PDF tarball
echo "db2pdf wine-user.sgml"
db2pdf wine-user.sgml > /dev/null 2>&1
echo "db2pdf wine-devel.sgml"
db2pdf wine-devel.sgml > /dev/null 2>&1
echo "db2pdf winelib-user.sgml"
db2pdf winelib-user.sgml > /dev/null 2>&1
echo "db2pdf wine-pkg.sgml"
db2pdf wine-pkg.sgml > /dev/null 2>&1
tar czf winedoc-pdf.tgz wine-user.pdf wine-devel.pdf winelib-user.pdf wine-pkg.pdf
cp winedoc-pdf.tgz $WWWDIR

## Create SGML tarball
echo "Creating SGML package..."
tar czf winedoc-sgml.tgz *.sgml *.dsl *.ent db2html-winehq
cp winedoc-sgml.tgz $WWWDIR

## Done creating downloadable tarballs for users.  Now we want to
## create a tarball of SHTML in a slightly different form, for the
## website.  These versions use special server-side includes which
## aren't appropriate outside of winehq.com.
## 
## Use the special website stylesheet
export WINEDOC_STYLESHEET=../winehq.dsl

## Create four-book SHTML tarball
echo "./db2html-winehq wine-user.sgml"
./db2html-winehq wine-user.sgml
echo "./db2html-winehq wine-devel.sgml"
./db2html-winehq wine-devel.sgml
echo "./db2html-winehq winelib-user.sgml"
./db2html-winehq winelib-user.sgml
echo "./db2html-winehq wine-pkg.sgml"
./db2html-winehq wine-pkg.sgml
tar czf winehq-shtml.tgz wine-user wine-devel winelib-user wine-pkg
cp winehq-shtml.tgz $WWWDIR

