#!/bin/bash
# This file is meant to be SOURCED
#
#   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.
#
#  config functions
# 24 June 2016 -- Jeremy Mordkoff -- Genesis


OSM_load_config() { 
	OSM_load_config_file ${OSM_JENKINS}/SETTINGS
	if [ -z "$OSM_MDG" ]; then
		WARNING "OSM_MDG not set" 
	else 
		OSM_load_config_file ${OSM_JENKINS}/${OSM_MDG}/SETTINGS
	fi
}

OSM_load_config_file() { 
	[ $# -eq 1 ] || FATAL "arg is filename"
	if [ -f "$1" ]; then
		. "$1"
		INFO "config file $1 loaded"
	else
		WARNING "$1 not found"
	fi
}
		
