#!/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 [ -a $WWWDIR ]; then
  rm -rf $WWWDIR.old
  mv $WWWDIR $WWWDIR.old
  mkdir $WWWDIR
fi

## 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

