#!/bin/bash
Version=3.4
XService=YES
function print_centered {
     [[ $# == 0 ]] && return 1

     declare -i TERM_COLS="$(tput cols)"
     declare -i str_len="${#1}"
     [[ $str_len -ge $TERM_COLS ]] && {
          echo "$1";
          return 0;
     }

     declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
     [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
     filler=""
     for (( i = 0; i < filler_len; i++ )); do
          filler="${filler}${ch}"
     done

     printf "%s%s%s" "$filler" "$1" "$filler"
     [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
     printf "\n"

     return 0
}
# function to set terminal title
function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}

function intro_ {
print_centered "$(tput setaf 10)"
print_centered "  _____        __               ";
print_centered " / ___/__ ____/ /  ___ _______ _";
print_centered "/ (_ / -_) __/ _ \/ -_) __/ _ \`/";
print_centered "\___/\__/_/ /_.__/\__/_/  \_,_/ ";
print_centered "                                ";
echo -n "$(tput setaf 11)"
print_centered "Gerbera UPNP installation script v$Version"
echo -n "$(tput sgr0)"
echo ""
sleep 3
}

function update_ {
echo -e "$(tput setaf 10)\nUpdate/install packages:$(tput sgr0)"
sudo apt-get update
sudo apt-get install uuid-dev libsqlite3-dev libmysqlclient-dev libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev -y
sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev -y
sudo apt-get install libebml-dev ffmpeg ffmpegthumbnailer libffmpegthumbnailer-dev imagemagick fmtools libfmt-dev libmatroska-dev -y
echo -e ""
}

function version {
echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }';
}

function cmake_ {
pids=""
./tools/_cmake.sh & pids="$pids $!"
wait $pids
}

function build_ {
echo -e "$(tput setaf 10)\nBuild Gerbera:$(tput sgr0)"
cd  ~/Build_Cube/options
if [ ! -d gerbera ]
then
#git clone https://github.com/gerbera/gerbera.git
wget -c -q --show-progress http://folivier.homelinux.org/cube/pack/gerbera-1.12.1.tar.xz
tar xvfJ gerbera-1.12.1.tar.xz
mv gerbera-1.12.1 gerbera
rm gerbera-1.12.1.tar.xz
fi
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-pupnp.sh
sudo ldconfig
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-fmt.sh
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-spdlog.sh
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-duktape.sh
#cd ~/Build_Cube/options/gerbera/scripts
#sudo ./install-lastfm.sh
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-pugixml.sh
cd ~/Build_Cube/options/gerbera/scripts
sudo ./install-taglib.sh
echo -e ""
sudo ldconfig
cd ~/Build_Cube/options/gerbera
mkdir build
cd build
cmake .. -DWITH_MAGIC=1 -DWITH_CURL=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=1 -DWITH_EXIF=1 -DWITH_LASTFM=0 -DWITH_MYSQL=0
make -j6
sudo make install

cd ~
#sudo rm -r ~/Build_Cube/options/gerbera/

wget -c http://folivier.homelinux.org/cube/pack/gerbera.tar.xz
tar xvfJ gerbera.tar.xz
rm gerbera.tar.xz

echo -e "\n\e[97mEnd of process...\e[0m"
}

function service_ {
sudo killall -9 gerbera > /dev/null 2>&1
if ! getent passwd gerbera > /dev/null 2>&1
then
sudo useradd --system gerbera
fi
if ! [ -d /etc/gerbera ]
then
sudo mkdir /etc/gerbera
sudo chown -Rv gerbera:gerbera /etc/gerbera
fi
sudo systemctl stop gerbera.service > /dev/null 2>&1
cat <<'EOF'>> gerbera.service
[Unit]
Description=Gerbera Media Server
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=simple
User=wareck
Group=adm
ExecStart=/usr/local/bin/gerbera -c /home/wareck/.config/gerbera/config.xml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
sudo cp gerbera.service /lib/systemd/system/gerbera.service
sudo rm gerbera.service
sudo systemctl daemon-reload > /dev/null 2>&1
sudo systemctl start gerbera > /dev/null 2>&1
sudo systemctl enable gerbera > /dev/null 2>&1
echo "Done"
}

intro_
update_
cmake_
build_

echo -e "$(tput setaf 10)\nService optional :$(tput sgr0)"
if [ $XService = "YES" ]
then
 service_
fi
#while true; do
#read -p "Do you want to install service (y/n) ? " yn
#
#case $yn in
 #       [Yy] ) service_ ;
#		exit 1;;
 #       [Nn] ) echo exiting...;
#                exit;;
#        * ) echo invalid response;
#                exit 1;;
#esac
#done

echo -e "\n\e[97mEnd of process...\e[0m"