#! /bin/sh

# This script takes the result of "make dist" and:
# 1) Unpacks it.
# 2) Ensures all contents are user-writable.  Some version control systems
#    keep code read-only until you explicitly ask to edit it, and the normal
#    "make dist" process does not correct for this, so the result is that
#    the entire dist is still marked read-only when unpacked, which is
#    annoying.  So, we fix it.
# 3) Convert MSVC project files to MSVC 2005, so that anyone who has version
#    2005 *or* 2008 can open them.  (In version control, we keep things in
#    MSVC 2008 format since that's what we use in development.)
# 4) Uses the result to create .tar.gz, .tar.bz2, and .zip versions and
#    deposites them in the "dist" directory.  In the .zip version, all
#    non-testdata .txt files are converted to Windows-style line endings.
# 5) Cleans up after itself.

if [ "$1" == "" ]; then
  echo "USAGE:  $0 DISTFILE" >&2
  exit 1
fi

if [ ! -e $1 ]; then
  echo $1": File not found." >&2
  exit 1
fi

set -ex

LANGUAGES="cpp csharp java javanano js objectivec python ruby"
BASENAME=`basename $1 .tar.gz`
VERSION=${BASENAME:9}

# Create a directory called "dist", copy the tarball there and unpack it.
mkdir dist
cp $1 dist
cd dist
tar zxvf $BASENAME.tar.gz
rm $BASENAME.tar.gz

# Set the entire contents to be user-writable.
chmod -R u+w $BASENAME
cd $BASENAME

for LANG in $LANGUAGES; do
  # Build the dist again in .tar.gz
  ./configure DIST_LANG=$LANG
  make dist-gzip
  mv $BASENAME.tar.gz ../protobuf-$LANG-$VERSION.tar.gz
done

# Convert all text files to use DOS-style line endings, then build a .zip
# distribution.
todos *.txt */*.txt

for LANG in $LANGUAGES; do
  # Build the dist again in .zip
  ./configure DIST_LANG=$LANG
  make dist-zip
  mv $BASENAME.zip ../protobuf-$LANG-$VERSION.zip
done

cd ..
rm -rf $BASENAME
