Verify dependencies for build_nexus_blob.sh are installed 20/90520/5
authorBartek Grzybowski <b.grzybowski@partner.samsung.com>
Tue, 2 Jul 2019 08:15:36 +0000 (10:15 +0200)
committerBartek Grzybowski <b.grzybowski@partner.samsung.com>
Fri, 5 Jul 2019 06:13:34 +0000 (08:13 +0200)
Script now checks if utilized tools are installed on the
system. Without that it would fail in the middle of the flow.
Now it will fail fast at the beginning if a particular dependency
is missing. It will also list those missing dependencies.

Change-Id: I39bb6f5d1b9d3eec4a76e77a6af9470f3a3d5244
Issue-ID: OOM-1945
Signed-off-by: Bartek Grzybowski <b.grzybowski@partner.samsung.com>
build/build_nexus_blob.sh

index 5f4ed0f..1e21a23 100755 (executable)
@@ -20,7 +20,7 @@
 
 ### This script prepares Nexus repositories data blobs for ONAP
 
-## The script requires following dependencies are installed: nodejs, jq, docker, twine
+## The script requires following dependencies are installed: nodejs, jq, docker, twine, expect
 ## All required resources are expected in the upper directory created during
 ## download procedure as DATA_DIR or in the directory given as --input-directory
 ## All lists used must be in project data_lists directory or in the directory given
@@ -52,12 +52,15 @@ NEXUS_EMAIL=admin@example.org
 # Setting paths
 LOCAL_PATH="$(readlink -f $(dirname ${0}))"
 
-#Defaults
+# Defaults
 DOCKER_LOAD="false"
 DATA_DIR="$(realpath ${LOCAL_PATH}/../../resources)"
 NEXUS_DATA_DIR="${DATA_DIR}/nexus_data"
 LISTS_DIR="${LOCAL_PATH}/data_lists"
 
+# Required dependencies
+COMMANDS=(jq docker expect npm twine)
+
 usage () {
     echo "   Example usage: build_nexus_blob.sh --input-directory </path/to/downloaded/files/dir> --output-directory
            </path/to/output/dir> --resource-list-directory </path/to/dir/with/resource/list> [--load-docker-images]
@@ -76,6 +79,20 @@ load_docker_images () {
     done
 }
 
+# Verify all dependencies are available in PATH
+FAILED_COMMANDS=()
+for cmd in ${COMMANDS[*]};
+do
+    command -v $cmd >/dev/null 2>&1 || FAILED_COMMANDS+=($cmd)
+done
+if [ ${#FAILED_COMMANDS[*]} -gt 0 ];
+then
+    echo "Following commands where not found in PATH and are required:"
+    echo ${FAILED_COMMANDS[*]}
+    echo "Aborting."
+    exit 1
+fi
+
 while [ "${1}" != "" ]; do
     case ${1} in
         -i | --input-directory )           shift