#!/bin/bash
#
# This script prepares a tarbaill for ocaml-doc package by downloading
# OCaml's upstream documentation from caml.inria.fr
#
# It needs tar and curl.

set -e

ver="$1"
dir=`mktemp -d "ocaml-doc-XXXXXXXXX"`
finaldir="ocaml-doc-$ver"
tmp=`mktemp -d "ocaml-doc-tmp-XXXXXXXXX"`
url="http://caml.inria.fr/pub/distrib/ocaml-${ver}"
dl="curl -#"

function tarxf() {
  top=`tar tzf $1/$3 | sed -e 's@/.*@@' | uniq`
  tar xf $1/$3 -C $2
  mv $2/$top $4
}

function msg() {
  echo "I: $1"
}

function usage() {
  echo "Usage: $0 MAJOR_VERSION.MINOR_VERSION"
  exit 1
}

test -z $ver && usage

# Downloading documentation
msg "Downloading documentation in $dir ($tmp)"
$dl "$url/ocaml-${ver}-refman.info.tar.gz" -o $dir/info.tar.gz
$dl "$url/ocaml-${ver}-refman-html.tar.gz" -o $dir/html.tar.gz
$dl "$url/ocaml-${ver}-refman.pdf" -P $dir -o $dir/refman.pdf
$dl "$url/ocaml-${ver}-refman.txt" -P $dir -o $dir/refman.txt
$dl "http://nicolaspouillard.fr/ocamlbuild/ocamlbuild-user-guide.pdf" -o $dir/ocamlbuild-user-guide.pdf

# Extracting tarballs
msg "Extracting downloaded traballs"
mkdir -p $finaldir
tarxf $dir $tmp info.tar.gz $finaldir/ocaml.info
tarxf $dir $tmp html.tar.gz $finaldir/ocaml.html
cp $dir/refman.pdf $finaldir/ocaml-${ver}-refman.pdf
gzip --to-stdout $dir/refman.txt > $finaldir/ocaml-${ver}-refman.txt.gz
cp $dir/ocamlbuild-user-guide.pdf $finaldir/

# Building final tarball
msg "Building final tarball in ../ocaml-doc-${ver}.tar.gz"
tar czvf ../ocaml-doc-${ver}.tar.gz $finaldir

# Cleaning
msg "Cleaning..."
rm -rf $dir
rm -rf $tmp
rm -rf $finaldir
