#!/bin/bash

# Only tested on Ubuntu 14.04

# Uses information stored in GitBucket git repo on GitHub as defaults.
# Edit gitbucket.conf before running this

set -e

GITBUCKET_VERSION=2.1

if [ ! -f gitbucket.conf ]; then
  echo "gitbucket.conf not found, aborting"
  exit -3
fi
source gitbucket.conf

function createDir {
  if [ ! -d "$1" ]; then
    echo "Making $1 directory."
    sudo mkdir -p "$1"
  fi
}

if [ "$(which iptables)" ]; then
  echo "Opening port $GITBUCKET_PORT in firewall."
  sudo iptables -A INPUT -p tcp --dport $GITBUCKET_PORT -j ACCEPT
  echo "Please use iptables-persistent:"
  echo "  sudo apt-get install iptables-persistent"
  echo "After installed, you can save/reload iptables rules anytime:"
  echo "  sudo /etc/init.d/iptables-persistent save"
  echo "  sudo /etc/init.d/iptables-persistent reload"
fi

createDir "$GITBUCKET_HOME"
createDir "$GITBUCKET_WAR_DIR"
createDir "$GITBUCKET_DIR"
createDir "$GITBUCKET_LOG_DIR"

echo "Fetching GitBucket v$GITBUCKET_VERSION and saving as $GITBUCKET_WAR_FILE"
sudo wget -qO "$GITBUCKET_WAR_FILE" https://github.com/gitbucket/gitbucket/releases/download/$GITBUCKET_VERSION/gitbucket.war

sudo rm -f "$GITBUCKET_LOG_DIR/run.log"

echo "Copying gitbucket.conf to $GITBUCKET_DIR"
sudo cp gitbucket.conf $GITBUCKET_DIR
if [ `isUbuntu` ] || [ `isRedHat` ]; then
  sudo cp gitbucket.init "$GITBUCKET_SERVICE"
  # Install gitbucket as a service that starts when system boots
  sudo chown root:root $GITBUCKET_SERVICE
  sudo chmod 755 $GITBUCKET_SERVICE
  sudo update-rc.d "$(basename $GITBUCKET_SERVICE)" defaults 98 02
  echo "Starting GitBucket service"
  sudo $GITBUCKET_SERVICE start
elif [ `isMac` ]; then
  sudo macosx/makePlist
  echo "Starting GitBucket service"
  sudo cp gitbucket.conf "$GITBUCKET_SERVICE"
  sudo cp gitbucket.init "$GITBUCKET_SERVICE"
  sudo chmod a+x "$GITBUCKET_SERVICE"
  sudo "$GITBUCKET_SERVICE" start
else
  echo "Don't know how to install this OS"
  exit -2
fi

if [ $? != 0 ]; then
  less "$GITBUCKET_LOG_DIR/run.log"
fi
