#!/bin/sh -e

VERSION=$1

if [ -z "${VERSION}" ]; then
  echo "NO VERSION"
  exit 1
fi

echo "Building Apache CouchDB ${VERSION}"

REL_DIR=apache-couchdb-${VERSION}
# make release dir
rm -rf ${REL_DIR}
mkdir ${REL_DIR}

CURRENT_BRANCH=`git rev-parse --abbrev-ref HEAD`

# copy sources over
git archive ${CURRENT_BRANCH} | tar -xC ${REL_DIR}/ -f -
cd src/
for repo in *; do
  cd ${repo}
  if [ -d ".git" ]; then
    mkdir -p ../../${REL_DIR}/src/${repo}
    git_ish=`git rev-parse --short HEAD`
    git archive ${git_ish} \
        | tar --exclude '*do_not_compile.erl' -xC ../../${REL_DIR}/src/${repo}/ -f -
  fi
  set +e
  grep -rl '{vsn, git}' ../../${REL_DIR}/src/${repo}/ 2>/dev/null \
      | xargs sed -ie "s/{vsn, git}/{vsn, \"${VERSION}\"}/" 2>/dev/null
  set -e
  cd ..
done

cd ..

if test -e .git; then
  # save git sha in version.mk
  git_sha=`git rev-parse --short HEAD`
  echo "git_sha=${git_sha}" >> ${REL_DIR}/version.mk
  # create CONTRIBUTORS file
  OS=`uname -s`

  sed -e "/^#.*/d" CONTRIBUTORS.in > ${REL_DIR}/CONTRIBUTORS
  CONTRIB_EMAIL_SED_COMMAND="s/^[[:blank:]]{5}[[:digit:]]+[[:blank:]]/ * /"
  git shortlog -se 6c976bd..HEAD \
      | grep -v @apache.org \
      | sed -E -e "${CONTRIB_EMAIL_SED_COMMAND}" >> ${REL_DIR}/CONTRIBUTORS
  echo "" >> ${REL_DIR}/CONTRIBUTORS # simplest portable newline
  echo "For a list of authors see the \`AUTHORS\` file." >> ${REL_DIR}/CONTRIBUTORS
fi

# copy our rebar
cp bin/rebar ${REL_DIR}/bin/rebar
