#!/bin/bash

#
# 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 -ex

function help() {
    cat <<EOF

Brooklyn release verifier.

Usage

    verify-brooklyn-install.sh release [rc]

The script tests that:
 * All artefacts are downloadable. All hashes match and signatures pass.
 * Source artefact compiles and unit tests pass.

EOF
    exit 0
}

RELEASE=$1
RC=$2

while getopts "h" o; do
    case "${o}" in
        h)  help
            ;;
        *)  usage "Invalid option: $*"
            ;;
    esac
done

if [ -z ${RC} ]; then RELEASE_NAME=$RELEASE; else RELEASE_NAME=$RELEASE-$RC; fi

if [ -e /sbin/md5 ]; then
    MD5SUM="/sbin/md5 -q"
else
    MD5SUM=/usr/bin/md5sum
fi

if [ -e /sbin/sha1 ]; then
    SHA1SUM=/sbin/sha1
elif [ -e /usr/bin/shasum ]; then
    SHA1SUM=/usr/bin/shasum
else
    SHA1SUM=/usr/bin/sha1sum
fi

curl https://dist.apache.org/repos/dist/release/incubator/brooklyn/KEYS | gpg --import

wget -r --no-parent https://dist.apache.org/repos/dist/dev/incubator/brooklyn/$RELEASE_NAME/

cd dist.apache.org/repos/dist/dev/incubator/brooklyn/$RELEASE_NAME/

for tarball in `ls *.tar.gz`; do
    # Verify md5sum
    ACTUAL=`$MD5SUM ${tarball} | awk '{print $1}'`
    EXPECTED=`cat ${tarball}.md5 | awk '{print $1}'`
    [ "$ACTUAL" == "${EXPECTED}" ]
    # Verify sha1sum
    ACTUAL=`$SHA1SUM ${tarball} | awk '{print $1}'`
    EXPECTED=`cat ${tarball}.sha1 | awk '{print $1}'`
    [ "$ACTUAL" == "${EXPECTED}" ]
    # verify signature
    gpg --verify ${tarball}.asc ${tarball};
    # Untar
    tar -xzf ${tarball};
done

reldir="${RELEASE}-src"
if [ -d "${reldir}" ]; then
	  cd ${reldir};
	  mvn clean install;
fi
