aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/bash/function/common.sh
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/bash/function/common.sh')
-rw-r--r--resources/libraries/bash/function/common.sh37
1 files changed, 20 insertions, 17 deletions
diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh
index 5982af9427..34aa44f338 100644
--- a/resources/libraries/bash/function/common.sh
+++ b/resources/libraries/bash/function/common.sh
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
# 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:
@@ -90,40 +90,43 @@ function activate_virtualenv () {
set -exuo pipefail
+ # Update virtualenv pip package, delete and create virtualenv directory,
+ # activate the virtualenv, install requirements, set PYTHONPATH.
+
# Arguments:
- # - ${1} - Non-empty path to existing directory for creating virtualenv in.
+ # - ${1} - Path to existing directory for creating virtualenv in.
+ # If missing or empty, ${CSIT_DIR} is used.
+ # - ${2} - Path to requirements file, ${CSIT_DIR}/requirements.txt if empty.
# Variables read:
# - CSIT_DIR - Path to existing root of local CSIT git repository.
- # Variables set:
- # - ENV_DIR - Path to the created virtualenv subdirectory.
# Variables exported:
# - PYTHONPATH - CSIT_DIR, as CSIT Python scripts usually need this.
# Functions called:
# - die - Print to stderr and exit.
- # TODO: Do we really need to have ENV_DIR available as a global variable?
-
- if [[ "${1-}" == "" ]]; then
- die "Root location of virtualenv to create is not specified."
- fi
- ENV_DIR="${1}/env"
- rm -rf "${ENV_DIR}" || die "Failed to clean previous virtualenv."
+ # TODO: Do we want the callers to be able to set the env dir name?
+ # TODO: + In that case, do we want to support env switching?
+ # TODO: + In that case we want to make env_dir global.
+ # TODO: Do we want the callers to override PYTHONPATH loaction?
+ root_path="${1-$CSIT_DIR}"
+ env_dir="${root_path}/env"
+ req_path=${2-$CSIT_DIR/requirements.txt}
+ rm -rf "${env_dir}" || die "Failed to clean previous virtualenv."
pip install --upgrade virtualenv || {
die "Virtualenv package install failed."
}
- virtualenv "${ENV_DIR}" || {
+ virtualenv "${env_dir}" || {
die "Virtualenv creation failed."
}
set +u
- source "${ENV_DIR}/bin/activate" || die "Virtualenv activation failed."
+ source "${env_dir}/bin/activate" || die "Virtualenv activation failed."
set -u
- pip install -r "${CSIT_DIR}/requirements.txt" || {
- die "CSIT requirements installation failed."
+ pip install --upgrade -r "${req_path}" || {
+ die "Requirements installation failed."
}
-
# Most CSIT Python scripts assume PYTHONPATH is set and exported.
- export PYTHONPATH="${CSIT_DIR}" || die "Export failed."
+ export PYTHONPATH="${root_path}" || die "Export failed."
}