#!/usr/bin/env bash

set -e

if test $# -ne 2
then
  echo 'usage $0 version (stagingRepoUrl|stagingRepoPath)'
  exit
fi

function copy_artifact {
  groupId=$1
  artifactId=$2
  classifier=$3
  ext=$4
  output=$5

  groupIdPath=`echo $groupId | sed 's#\.#/#g'`

  if [[ -z $classifier ]]; then
    filename=$artifactId-$version.$ext
  else
    filename=$artifactId-$version-$classifier.$ext
  fi

  path=$repo/$groupIdPath/$artifactId/$version/$filename

  if [[ $classifier == "source-release" ]]; then
    outputPath="dist-publish/source"
  else
    outputPath="dist-publish/binaries"
  fi

  if [[ -z $output ]]; then
    output=$filename
  fi

  out="$outputPath/$output"

  if [[ $repo =~ https?:// ]]; then
    echo "Downloading $path to $out"
    wget -O $out $path
  else
    echo "Copying $path to $out"
    cp $path $out
  fi

  svn add $out

  # Regenerate, as the one in the repository will have the wrong filename
  if [[ ! $ext =~ .asc$ ]]; then
    (
      cd $outputPath
      openssl md5 $output >$output.md5
      svn add $output.md5
      openssl sha1 $output >$output.sha1
      svn add $output.sha1
    )
    if [[ $? != 0 ]]; then exit $?; fi
  fi

  if [[ ! -s $out ]]; then
    echo "Failed: $out"
    exit 1
  fi
}

version=$1
repo=`echo $2 | sed 's#/$##'`

(
cd `dirname $0`

svn checkout https://dist.apache.org/repos/dist/dev/continuum dist-publish

cp ./KEYS dist-publish

if [[ $version =~ ^parent- ]]; then
  version=`echo $version | sed 's/^parent-//'`
  for i in zip zip.asc
  do
    copy_artifact "org.apache.continuum" "continuum-parent" "source-release" $i
  done
elif [[ $version =~ ^skin- ]]; then
  version=`echo $version | sed 's/^skin-//'`
  for i in zip zip.asc
  do
    copy_artifact "org.apache.continuum" "continuum-skin" "source-release" $i
  done
else
  for i in tar.gz tar.gz.asc zip zip.asc
  do
    copy_artifact "org.apache.continuum" "continuum-jetty" "bin" $i "apache-continuum-$version-bin.$i"
    copy_artifact "org.apache.continuum" "continuum-buildagent-jetty" "bin" $i "apache-continuum-buildagent-$version-bin.$i"
  done

  for i in war war.asc
  do
    copy_artifact "org.apache.continuum" "continuum-webapp" "" $i "apache-continuum-$version.$i"
    copy_artifact "org.apache.continuum" "continuum-buildagent-webapp" "" $i "apache-continuum-buildagent-$version.$i"
  done

  for i in zip zip.asc
  do
    copy_artifact "org.apache.continuum" "continuum" "source-release" $i "apache-continuum-$version-src.$i"
  done
fi

)
if [[ $? != 0 ]]; then exit $?; fi

echo "Check the results and commit the changes in dist-publish"
(
  cd dist-publish
  svn status
)
if [[ $? != 0 ]]; then exit $?; fi

