#!/usr/bin/env 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.

RABBITMQ_DOWNLOAD_URL="https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_5_1/rabbitmq-server-generic-unix-3.5.1.tar.gz"
RABBITMQ_DIRECTORY="rabbitmq_server-3.5.1"

echo "Downloading RabbitMQ Distribution from $RABBITMQ_DOWNLOAD_URL"

curl -L $RABBITMQ_DOWNLOAD_URL | tar xz

echo "Changing into RabbitMQ Directory $RABBITMQ_DIRECTORY"
cd $RABBITMQ_DIRECTORY

if [ -f `pwd`/$RABBITMQ_DIRECTORY/sbin/rabbitmq-server ]; then
   echo "RabbitMQ Server script exists"
else
   echo "RabbitMQ startup script does not exist. Please check the download"
fi





