#!/bin/sh
#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
#
set -e

repo=https://svn.apache.org/repos/asf/subversion
svn=svn
olds=7

# Parse our arguments
while getopts "cd:t:s:o:" flag; do
  case $flag in
    d) dir="`cd $OPTARG && pwd`" ;; # abspath
    c) clean="1" ;;
    t) target="$OPTARG" ;;
    s) svn="$OPTARG" ;;
    o) olds="$OPTARG" ;;
  esac
done

# Setup directories
if [ -n "$dir" ]; then cd $dir; else dir="."; fi
if [ -d "roll" ]; then rm -rf roll; fi
mkdir roll
if [ ! -n "$target" ]; then
  if [ ! -d "target" ]; then mkdir target; fi
  target="target"
fi

abscwd=`cd $dir; pwd`

echo "Will place results in: $target"

# get youngest
head=`$svn info $repo/trunk | grep '^Revision' | cut -d ' ' -f 2`

# Get the latest versions of the rolling scripts
for i in release.py dist.sh
do
  $svn export --force -r $head $repo/trunk/tools/dist/$i@$head $dir/$i
done
# We also need ezt
$svn export --force -r $head $repo/trunk/build/generator/ezt.py@$head $dir/ezt.py

# Create the environment
cd roll
echo '----------------building environment------------------'
../release.py --verbose --base-dir ${abscwd}/roll build-env trunk-nightly

# Roll the tarballs
echo '-------------------rolling tarball--------------------'
../release.py --verbose --base-dir ${abscwd}/roll roll --branch trunk trunk-nightly $head
cd ..

# Create the information page
echo '-------------------moving results---------------------'
# ./release.py --base-dir ${abscwd}/roll post-candidates trunk-nightly $head \
#     --target $target
if [ ! -d "$target/dist" ]; then mkdir "$target/dist"; fi
if [ -d "$target/dist/r$head" ]; then rm -r "$target/dist/r$head"; fi
mv roll/deploy $target/dist/r$head

# Some static links for the most recent artifacts.
ln -sf "r$head" "$target/dist/current"
ls "$target/dist/r$head" | while read fname; do
  ln -sf "r$head/$fname" "$target/dist/$fname"
done

# Clean up old results
ls -t1 "$target/dist/" | sed -e "1,${olds}d" | while read d; do
  rm -rf "$target/dist/$d"
done

# Optionally remove our working directory
if [ -n "$clean" ]; then
  echo '--------------------cleaning up-----------------------'
  rm -rf roll
fi

echo '------------------------done--------------------------'
