1
0
Fork 0
arangodb/Installation/arangodb-helper

147 lines
3.0 KiB
Bash

#!/bin/sh
# os detection
ar_detect_os(){
local file="/etc/centos-release"
local os="unknown release"
if [ -f "$file" ]; then
os="centos"
if grep -q -s " 6" "$file" &>/dev/null ; then
os+="6"
elif grep -q -s " 7" "$file" &>/dev/null ; then
os+="7"
fi
fi
echo "$os"
#debian
#opensuse
#mac
}
#export detected os
export ARANGO_OS="$(ar_detect_os)"
#print error message
ar_err(){
local msg="$1"
local code="${2-1}"
if ! [ $code -eq 0 ]; then
echo "ERROR: $msg" 1>&2
fi
}
#print fatal error message and exit
ar_ferr(){
local code="${2-1}"
if ! [ $code -eq 0 ]; then
local msg="$1"
echo "FATAL ERROR: $msg" 1>&2
exit "$code"
fi
}
## exit codes and other data
#function for searching .dat files
ar_find_dat_file(){
local name="$1"
local found=false
for p in "/usr/share/arangodb3" "some other path"; do
local full_path="$p/$name"
if [ -f "$full_path" ]; then
found=true
echo "$full_path"
break
fi
done
if ! $found; then
echo "$could not find datafile $name"
fi
}
export ARANGO_ERROR_CODES_DAT="$(ar_find_dat_file exitcodes.dat)"
ar_exitcode_num_to_string(){
in="$1"
local file="$ARANGO_ERROR_CODES_DAT"
local found=false
if [ -f "$file" ]; then
while IFS=',' read code num _ ; do
if [ "$in" = "$num" ]; then
echo $code
found=true
break
fi
done < "$file"
else
echo "EXIT_CODE_RESOLVING_FAILED for code $in"
fi
if ! $found; then
echo "EXIT_CODE_RESOLVING_FAILED for code $in"
fi
}
ar_exitcode_num_to_message(){
local in="$1"
if [ $in = "0" ]; then
return
fi
local file="$ARANGO_ERROR_CODES_DAT"
local found=false
if [ -f $file ]; then
while IFS=',' read code num message long_message; do
if [ "$in" = "$num" ]; then
echo "$message"
found=true
break
fi
done < "$file"
else
echo "could not resolve exit code $in"
fi
if ! $found; then
echo "could not resolve exit code $in"
fi
}
ar_exitcode_string_to_num(){
local file="$ARANGO_ERROR_CODES_DAT"
local found=false
if [ -f $file ]; then
in="$1"
while IFS=',' read code num _ ; do
if [ "$in" = "$code" ]; then
echo $num
found=true
break
fi
done < "$file"
else
echo 2
fi
if ! $found; then
echo 2
fi
}
ar_exit_by_num(){
local code="$1"
if [ $code -ne 0 ]; then
local str="$(ar_exitcode_num_to_string $code)"
local msg="$(ar_exitcode_num_to_message $code)"
echo "FATAL ERROR: $str - $msg" 1>&2
exit "$code"
fi
}
ar_exit_by_string(){
local code=$(ar_exitcode_string_to_num "$1")
ar_exit_by_num $code
}