#!/bin/bash

SLEEP_TIME="0.5"

whoami | grep root
if [[ "$?" -eq 0 ]]
    then postfix="_su"
        userID=`env | grep XAUTHORITY | awk -Fuser/ '{print $NF}' | awk -F\/ '{print $1}'`
        userName=`cat /etc/passwd | grep $userID | awk -F: '{print $1}'`
    else echo "Should be run as admin, exiting..."
        exit 1
fi

echo -e "userName: $userName\npostfix: $postfix"

if [[ -d /home/$userName ]]
    then target="/home/$userName/hardware_report$postfix.tar.gz"
    else target="/tmp/hardware_report$postfix.tar.gz"
fi

ts=`date +%x_%H:%M`
log="/tmp/log_fix386_$ts.txt"
apt list --installed > $log
echo "###" >> $log

title="Исправление ошибок"
text1="Запустить скрипт по устранению ошибок, связанных с установкой i386 библиотек?\nВыполнение займет продолжительное время, будет переустановлен ряд пакетов."
text2="Убедитесь, что доступен интернет и не запущены другие программы управления пакетами (магазин приложений, apt, gdebi и т.п.)"
text_in_progress="Идет исправление, пожалуйста ждите..."
text_cancelled="Отменено, работа не завершена!"
text_error="Произошла непредвиденная ошибка! Журнал работы скрипта: $log"
text_fin="Работа программы завершена. В случае ошибок обращайтесь в поддержку Uncom OS \n Пакет uncom-hotfix-fix386 будет автоматически удален \n\n Журнал работы скрипта: $log"

zenity  --width=384 --height=128 --question --title "$title"  --text "$text1\n\n$text2"; code=$?
if [ $code -eq 0 ]
    then echo "Proceeding..."
    else echo "Exiting..."
        exit 1
fi

tmpdir=`mktemp -d` ; code=$?
[[ $code -eq 0 ]] || {
    zenity --error --text="$text_error"
    exit 2
}

(
echo "5" ; sleep $SLEEP_TIME
apt update >> $log

echo "12" ; sleep $SLEEP_TIME
apt --fix-broken install -y -o Dpkg::Options::="--force-overwrite" 2>&1 >> $log

echo "15" ; sleep $SLEEP_TIME
for pack in `cat /usr/share/uncom-hotfix-fix386/lib_list.txt`
do
    grep "$pack/" $log && {
echo $pack >> $tmpdir/install_list.txt
}
done

echo "20" ; sleep $SLEEP_TIME
num=`cat $tmpdir/install_list.txt | wc -l`
# 80 - remaing percentage
one_pack=`dc -e "3 k 80 $num /p"`
percent="20"

for pack in `cat $tmpdir/install_list.txt`
do
    echo "### installing $pack ###" >> $log
    apt reinstall -y $pack 2>&1 >> $log
    percent=`dc -e "0 k $percent $one_pack + p"`
    echo "$percent | awk -F \. '{print $1}'"
done


) |
zenity --progress --width=384 --height=128 \
  --title="$title" \
  --text="$text_in_progress" \
  --no-cancel \
  --auto-close \
  --auto-kill \
  --percentage=0

if [ "$?" -eq 2 ] ; then
    echo "Exiting"
    exit 2
fi

echo "### content of install_list.txt ###" >> $log
cat $tmpdir/install_list.txt >> $log

echo "### apt all after the re-install ###" >> $log
apt list --installed >> $log

if [ "$?" = -1 ] ; then
        zenity --error \
          --text="$text_cancelled"
    [ -d $tmpdir ] && rm -fr $tmpdir
    exit 1
fi

zenity  --width=384 \
    --height=128 \
    --info \
    --ok-label "OK" \
    --title "$title" \
    --text "$text_fin"

ret=$?
echo "ret=$ret" >> $log

apt remove -y uncom-hotfix-fix386 2>&1 >> $log

chown $userName:$userName $log
