#!/bin/bash
# ============LICENSE_START=======================================================
#  Copyright (C) 2019 The Nordix Foundation. All rights reserved.
# ================================================================================
# 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

set -o errexit
set -o nounset
set -o pipefail

#-------------------------------------------------------------------------------
# Find and set where we are
#-------------------------------------------------------------------------------
STACK_ROOT_DIR="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
export STACK_ROOT_DIR

# NOTE (fdegir): different stacks and their branches have different scenarios
# supported by default so we set DEPLOY_SCENARIO within the stack unless it is
# set by user rather than setting the default one in engine
export DEPLOY_SCENARIO="${DEPLOY_SCENARIO:=onap-sdc-nofeature}"
echo "Info  : Deploy scenario is $DEPLOY_SCENARIO"

# TODO (fdegir): installation of pip packages fail due to not being able to find setuptools
# as build dependency so we do --no-use-pep517 as workaround.
# This needs to be revisited later on.
cd "$STACK_ROOT_DIR"
echo "Info  : Install stack python packages listed in stack requirements.txt using pip"
echo "        Please note that this may take some time"
redirect_cmd pip install --no-use-pep517 --force-reinstall -r requirements.txt

# vim: set ts=2 sw=2 expandtab:
