#!/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=XXXX
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

# Gerrit arranges to call this script with two parameters -- the refspec and commit ID that needs to be built
if [ $# -gt 0 ]; then
    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"
else
    INFO "Code to compile: master"
    git checkout master
fi

INFO "starting build"
### for start_build
### put your commands here to 
### build, test and produce coverage reports
# E.G.
#make clean || FATAL "make clean failed"
#make || FATAL "make failed"
#sudo make install || FATAL "make install failed"

RC=0

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


