#!/bin/bash # version: 0.1 # file: setup.sh # Folder: filebox (from git clone) # git clone https://git.a-lec.org/echolib/filebox.git # By echolib # License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 unset ${!setup_@} #---------------------------------------------------------------------- # Configuration ; folders and files to create/chown/copy... #---------------------------------------------------------------------- # Directories to CHOWN -R set_dir_R_CHO=( /var/lib/filebox /etc/filebox ) # bin Directories: Check ONLY with mkdir -p setup_dir_bin="/usr/local/bin" # filename application to CHOWN setup_file_bin="filebox" # bin uri set_bin_uri="$setup_dir_bin/$setup_file_bin" #------------------------ # Check commands function #------------------------ filebox__check_err() { if (( cmd_res == 0 ));then echo -ne " OK\n" else echo -ne " Error $cmd_res\n" exit 1 fi } #---------------------------------------------------------------------- # Remove Process #---------------------------------------------------------------------- case "$1" in remove|-R) [[ -f "$set_bin_uri" ]] \ && echo "- Removing $set_bin_uri" \ && sudo rm -f "$set_bin_uri" for setup_folder in ${set_dir_R_CHO[@]} do [[ -d "$setup_folder" ]] \ && echo "- Removing $setup_folder" \ && sudo rm -rf "$setup_folder" done echo "# filebox is uninstalled. Thank you for testing." ;; esac #---------------------------------------------------------------------- # Installation Process #---------------------------------------------------------------------- setup__install() { for setup_folder in ${set_dir_R_CHO[@]} do echo "- Folder: $setup_folder" echo -ne " Created:" sudo mkdir -p "$setup_folder" \ && cmd_res="$?" \ && filebox__check_err echo -ne " Owner $setup_user:" sudo chown -R "$setup_user":"$setup_user" "$setup_folder" \ && cmd_res="$?" \ && filebox__check_err done echo "- Folder: $setup_dir_bin" echo -ne " Created:" sudo mkdir -p "$setup_dir_bin" \ && cmd_res="$?" \ && filebox__check_err echo "- File: $setup_file_bin" echo -ne " Copy:" sudo cp "$PWD$set_bin_uri" \ "$set_bin_uri" \ && cmd_res="$?" \ && filebox__check_err echo -ne " Owner $setup_user:" sudo chown "$setup_user":"$setup_user" "$set_bin_uri" \ && cmd_res="$?" \ && filebox__check_err echo -e "\n# Thank you for installing filebox. Have fun" } # PWD is Not a repo ! [[ -d ".git" ]] \ && echo "! No repository here" \ && unset ${!setup_@} \ && exit 0 # Updaate && Check Version git pull setup_ins_version=` awk 'NR==2 {print $3}' "$setup_dir_bin/$setup_file_bin" 2>/dev/null` setup_new_version=` awk 'NR==2 {print $3}' "$PWD$setup_dir_bin/$setup_file_bin"` [[ "$setup_ins_version" == "$setup_ins_version" ]] \ && echo "$setup_file_bin is already up to date" \ && unset ${!setup_@} \ && exit 0 # Directory project name (First folder from git clone) setup_folder_git_name=`basename ${PWD}` read -rp ": Set $setup_folder_git_name for user ($USER)? " setup_user case "$setup_user" in ""|Y|y|O|o) setup_user="$USER" ;; *) ! [[ `awk -F: '{print $1}' /etc/passwd | grep "$setup_user"` ]] \ && echo "! No registred user: $setup_user" \ && unset ${!setup_@} \ && exit 1 ;; esac echo -e "\n# Installation Schema:" for setup_folder in ${set_dir_R_CHO[@]} do printf '%s%s\n' \ "- Folder: $setup_folder " \ "; sudo mkdir -p + sudo chown -R $setup_user:$setup_user" done echo "- Folder: $setup_dir_bin ; sudo mkdir -p" echo "- File: $set_bin_uri ; sudo cp + sudo chown $setup_user:$setup_user" echo echo "# Version: $setup_ins_version > $setup_new_version" read -rp "# Ready to install (y|N)? " setup_confirm case "$setup_confirm" in Y|y|O|o) setup__install ;; *) unset ${!setup_@};exit 0 ;; esac