#!/bin/bash
#   Copyright 2016 RIFT.IO Inc
#
#   Licensed 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.
# 
# TEMPLATE script to start a build. This is run inside a container
#
# 6 July 2016 -- Jeremy.Mordkoff@riftio.com -- adapted from the riftware version
# 

HERE=$(realpath $(dirname $0))
OSM_JENKINS=$(dirname $HERE)
. $OSM_JENKINS/common/all_funcs

# SET YOU MDG repository name here
export OSM_MDG=UI
OSM_load_config


# Here is an example for how to handle an incremental build
if [ -d $OSM_MDG ]; then
	INFO "reusing existing workspace"
	cd $OSM_MDG
	git pull 
else
	INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG"
	git clone $OSM_GIT_URL/$OSM_MDG
	cd $OSM_MDG
fi

if [ $# -gt 0 ]; then
    if [ "$1" = "checkout" ]; then
        INFO "Code to compile: '$2'"
        git checkout $2
    else
        INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'"
        git fetch origin $1 || FATAL "git fetch origin '$1' didn't work"
        git checkout -f $2 || FATAL "git checkout -f '$2' didn't work"
    fi
else
    INFO "Code to compile: master"
    git checkout master
fi

INFO "starting build"
make clean || FATAL "Make clean failed"
make -j16 || FATAL "Make failed"
sudo make install || FATAL "Make install Failed"

RC=0

INFO "done, RC=$RC"
exit $RC


