diff --git a/devleops/codeigniter/ci4-install.sh b/devleops/codeigniter/ci4-install.sh new file mode 100755 index 0000000..66494c6 --- /dev/null +++ b/devleops/codeigniter/ci4-install.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +#### Variables +APT_UPDATE="apt -y update" +APT_INST="apt -y install" +APT_PURGE="apt -y purge" +APT_REMOVE="apt -y autoremove" + +PKG_DEPS="curl wget git php php-cli php-curl php-mbstring php-readline php-mysql php-pgsql php-sqlite3 php-xml php-zip php-intl" +BIN_DEPS=(composer) + +#### Functions +check_root() { + if [ "$EUID" -ne 0 ]; then + echo "Must be root to run $0" + exit + fi +} + +choice() { + echo -ne "[y/n]" + while true + do + read -rN1 input + case $input in + [yY][eE][sS]|[yY]) + return 0 + + break + ;; + [nN][oO]|[nN]) + return 1 + ;; + esac + done +} + +check_deps_pkg() { +for NAME in "${PKG_DEPS[@]}" + do + dpkg -l $NAME > /dev/null + CODE=$? + if ! [ "$CODE" -ne 1 ]; then + echo -ne "\nInstall $NAME ? " + if choice 2>/dev/null; then + echo -ne "\n$APT_INST $NAME\n" + $APT_INST $NAME + else + echo -ne "\n\nAbort install script, package $NAME is required for work $PKG_NAME.\n" + exit 1; + fi + fi + done +} + +check_deps_bin() { +for NAME in "${BIN_DEPS[@]}" + do + if ! [ -x "$(command -v $NAME)" ]; then + echo "Error: $NAME is not installed." >&2 + exit 1; + fi + done +} + +#### Main +check_root +check_deps_bin +check_deps_pkg + +echo -ne "\nNow is all ready for create new project, example:\n\ncomposer create-project codeigniter4/appstarter project-root\n"