aboutsummaryrefslogtreecommitdiffstats
path: root/utility/install_os_dependencies.sh
diff options
context:
space:
mode:
authorMatthew Lemon <lemon@matthewlemon.com>2020-01-19 15:57:06 +0000
committerMatthew Lemon <lemon@matthewlemon.com>2020-01-19 15:57:06 +0000
commit9d76a3c52b8310726ec09e0262813f0438c21df6 (patch)
tree4acf47dce6c3aa75f8ad7c5cb56fe6486c2d64a7 /utility/install_os_dependencies.sh
init commit - from cookiecutter
Diffstat (limited to 'utility/install_os_dependencies.sh')
-rwxr-xr-xutility/install_os_dependencies.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/utility/install_os_dependencies.sh b/utility/install_os_dependencies.sh
new file mode 100755
index 0000000..ec9372f
--- /dev/null
+++ b/utility/install_os_dependencies.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+WORK_DIR="$(dirname "$0")"
+DISTRO_NAME=$(lsb_release -sc)
+OS_REQUIREMENTS_FILENAME="requirements-$DISTRO_NAME.apt"
+
+cd $WORK_DIR
+
+# Check if a requirements file exist for the current distribution.
+if [ ! -r "$OS_REQUIREMENTS_FILENAME" ]; then
+ cat <<-EOF >&2
+ There is no requirements file for your distribution.
+ You can see one of the files listed below to help search the equivalent package in your system:
+ $(find ./ -name "requirements-*.apt" -printf " - %f\n")
+ EOF
+ exit 1;
+fi
+
+# Handle call with wrong command
+function wrong_command()
+{
+ echo "${0##*/} - unknown command: '${1}'" >&2
+ usage_message
+}
+
+# Print help / script usage
+function usage_message()
+{
+ cat <<-EOF
+ Usage: $WORK_DIR/${0##*/} <command>
+ Available commands are:
+ list Print a list of all packages defined on ${OS_REQUIREMENTS_FILENAME} file
+ help Print this help
+
+ Commands that require superuser permission:
+ install Install packages defined on ${OS_REQUIREMENTS_FILENAME} file. Note: This
+ does not upgrade the packages already installed for new versions, even if
+ new version is available in the repository.
+ upgrade Same that install, but upgrade the already installed packages, if new
+ version is available.
+ EOF
+}
+
+# Read the requirements.apt file, and remove comments and blank lines
+function list_packages(){
+ grep -v "#" "${OS_REQUIREMENTS_FILENAME}" | grep -v "^$";
+}
+
+function install_packages()
+{
+ list_packages | xargs apt-get --no-upgrade install -y;
+}
+
+function upgrade_packages()
+{
+ list_packages | xargs apt-get install -y;
+}
+
+function install_or_upgrade()
+{
+ P=${1}
+ PARAN=${P:-"install"}
+
+ if [[ $EUID -ne 0 ]]; then
+ cat <<-EOF >&2
+ You must run this script with root privilege
+ Please do:
+ sudo $WORK_DIR/${0##*/} $PARAN
+ EOF
+ exit 1
+ else
+
+ apt-get update
+
+ # Install the basic compilation dependencies and other required libraries of this project
+ if [ "$PARAN" == "install" ]; then
+ install_packages;
+ else
+ upgrade_packages;
+ fi
+
+ # cleaning downloaded packages from apt-get cache
+ apt-get clean
+
+ exit 0
+ fi
+}
+
+# Handle command argument
+case "$1" in
+ install) install_or_upgrade;;
+ upgrade) install_or_upgrade "upgrade";;
+ list) list_packages;;
+ help|"") usage_message;;
+ *) wrong_command "$1";;
+esac