filebox/setup.sh

145 lines
3.8 KiB
Bash

#!/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
sudo chmod 755 "$set_bin_uri"
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