#!/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:=os-nosdn-nofeature}"
echo "Info  : Deploy scenario is $DEPLOY_SCENARIO"

# NOTE (fdegir): we need to install stack specific operating system requirements
# and python packages before proceeding further
echo "Info  : Install stack operating system requirements listed in stack bindep.txt using $PKG_MGR"
cd "$STACK_ROOT_DIR"
# bindep -b exits with non-zero if it identifies a missing package so we disable pipefail
set +o pipefail
# shellcheck disable=SC2046 disable=SC2086
bindep -b &> /dev/null || redirect_cmd ${INSTALLER_CMD} $(bindep -b)
set -o pipefail

# 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.
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:

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