#!/bin/bash

# remastersys-gui script can make an installable livecd/dvd
# from a Debian installed and customized system
# Created by Tony "Fragadelic" Brijeski
# Copyright 2007-2012 Under the GNU GPL2 License
# Created October 28th, 2007, 2008, 2012
#
# Forked for SparkyLinux by pavroo <pavroo@onet.eu> 2013/08/05
# Copyright 2013-2024 Under the GNU GPL2 License
# Last update 2024/08/04 by pavroo

# get default's locale file
DEFLOCDIR="/usr/share/sparky/sparky-backup-sys"
if [ "`cat /etc/default/locale | grep LANG= | grep de`" != "" ]; then
. $DEFLOCDIR/de
elif [ "`cat /etc/default/locale | grep LANG= | grep el`" != "" ]; then
. $DEFLOCDIR/el
elif [ "`cat /etc/default/locale | grep LANG= | grep es`" != "" ]; then
	if [ "`cat /etc/default/locale | grep LANG= | grep es_AR`" != "" ]; then
. $DEFLOCDIR/es_AR
	else
. $DEFLOCDIR/es_ES
	fi
elif [ "`cat /etc/default/locale | grep LANG= | grep fi`" != "" ]; then
. $DEFLOCDIR/fi
elif [ "`cat /etc/default/locale | grep LANG= | grep fr`" != "" ]; then
. $DEFLOCDIR/fr
elif [ "`cat /etc/default/locale | grep LANG= | grep hu`" != "" ]; then
. $DEFLOCDIR/hu
elif [ "`cat /etc/default/locale | grep LANG= | grep id_ID`" != "" ]; then
. $DEFLOCDIR/id_ID
elif [ "`cat /etc/default/locale | grep LANG= | grep it`" != "" ]; then
. $DEFLOCDIR/it
elif [ "`cat /etc/default/locale | grep LANG= | grep pl`" != "" ]; then
. $DEFLOCDIR/pl
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_BR`" != "" ]; then
. $DEFLOCDIR/pt_BR
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_PT`" != "" ]; then
. $DEFLOCDIR/pt_PT
elif [ "`cat /etc/default/locale | grep LANG= | grep ru`" != "" ]; then
. $DEFLOCDIR/ru
elif [ "`cat /etc/default/locale | grep LANG= | grep uk`" != "" ]; then
. $DEFLOCDIR/uk
else
. $DEFLOCDIR/en
fi

DIALOG550="yad --window-icon=/usr/share/icons/sparky/sparkybackupsys/sparky.png --width=600 --height=400 --center"
DIALOG="yad --window-icon=/usr/share/icons/sparky/sparkybackupsys/sparky.png --fixed --center"
TITLE="--always-print-result --dialog-sep --image=/usr/share/icons/sparky/sparkybackupsys/sparky.png --title="
TEXT="--text="
ENTRY="--entry "
ENTRYTEXT="--entry-text "
FILESELECTION="--file "
MENU="--list --column=Pick --column=Info"
YESNO=" --button=Ok:0 --button=Exit:1 "
MSGBOX=" --button=Ok:0 "
TITLETEXT="Sparky Backup System"

if [ -f /usr/bin/sparky-editor ]; then
	SPARKYEDITOR="sparky-editor"
else
	SPARKYEDITOR="gnome-text-editor"
fi

if [ -f /usr/bin/sparky-xterm ];then
	SPARKYXTERM="/usr/bin/sparky-xterm"
elif [ -f /usr/bin/sparky-terminal ];then
	SPARKYXTERM="/usr/bin/sparky-terminal -e"
else
	echo "sparky-xterm is missing... Exiting..."
	exit 1
fi

testroot="`whoami`"
if [ "$testroot" != "root" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL1 $LOCAL2"
	exit 1
fi

# if Live system just quit, do nothing
TESTMODE=`grep "1000" /etc/passwd | grep -v "Live"`
if [ "$TESTMODE" = "" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL3\n$LOCAL4\n\n$LOCAL2"
	exit 1
fi

. /etc/sparkybackup/sparkybackup.conf
. /etc/sparkybackup/sparkybackup.version

mainmenu () {

CHOICES=`$DIALOG550 $TITLE"$TITLETEXT" $YESNO $MENU $TEXT"$LOCAL5" \
Info "$LOCAL6" \
EFI "$LOCAL7" \
Edit "$LOCAL8" \
Installer "$LOCAL9" \
Cache "$LOCAL10" \
Skel "$LOCAL82" \
Dist "$LOCAL11" \
Clean "$LOCAL12" \
Log "$LOCAL13"`

if [ "$?" = "0" ]; then
	CHOICE=`echo $CHOICES | cut -d "|" -f 1`
else
	exit 0
fi

if [ "$CHOICE" = "Dist" ]; then
	distmenu
elif [ "$CHOICE" = "Skel" ]; then
	skelmenu
elif [ "$CHOICE" = "Clean" ]; then
	cleanmenu
elif [ "$CHOICE" = "Edit" ]; then
	$SPARKYEDITOR /etc/sparkybackup/sparkybackup.conf
	mainmenu
elif [ "$CHOICE" = "Installer" ]; then
	$SPARKYEDITOR /etc/sparkybackup/sparkylinux-installer.conf
	mainmenu
elif [ "$CHOICE" = "Cache" ]; then
	cachemenu
elif [ "$CHOICE" = "Log" ]; then
	if [ -f "$WORKDIR/sparkybackup-sys/sparkybackup.log" ]; then
		$DIALOG $TITLE"$TITLETEXT" --width=600 --height=400 --text-info --filename="$WORKDIR/sparkybackup-sys/sparkybackup.log"
	else
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL14"
	fi
	mainmenu
elif [ "$CHOICE" = "Info" ]; then
$DIALOG550 --fixed $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL15 \n\
$LOCAL16 \n\
$LOCAL17 \n\
\n\
$LOCAL18 \n\
$LOCAL19 \n\
$LOCAL20 \n\
$LOCAL21 \n\
\n\
$LOCAL22 \n\
sudo sparkybackup /$LOCAL23/ \n\
\n\
$LOCAL24 \n\
$LOCAL25 \n\
$LOCAL26\n\
\n\
$LOCAL27 $SPARKYBACKUPVERSION \n\
$LOCAL28 https://sparkylinux.org/forum"
mainmenu
elif [ "$CHOICE" = "EFI" ]; then
$DIALOG550 --fixed $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL29 \n\
$LOCAL30 \n\n\
1. $LOCAL31 \n\
- efibootmgr \n\
- grub-efi \n\
- grub-efi-amd64 ($LOCAL32 ia32) \n\
- grub-efi-amd64-bin ($LOCAL32 ia32) \n\
- libefivar1 \n\
- libefiboot1 \n\
\n\
2. $LOCAL33 /home/offline \n\
\n\
3. $LOCAL34 \n\
$LOCAL35 \n\
\n\
$LOCAL36 \n\
$LOCAL37"
mainmenu
else
	exit 0
fi

}

skelmenu () {

$DIALOG $TITLE"$TITLETEXT" $YESNO $TEXT"$LOCAL38 \n$LOCAL39 \n\n$LOCAL40 \n$LOCAL41 \n$LOCAL42 \n$LOCAL43 \n\n$LOCAL44 \n$LOCAL45"

if [ "$?" != "0" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL46 \n$LOCAL47"
	exit 0 

else

	j="0"
	i="1000"
	while [ "`cat /etc/passwd | awk -F ":" '{print $3}' | grep $i`" != "" ]; do
	for i in $(seq 1000 1 1010); do

	if [ "`cat /etc/passwd | awk -F ":" '{print $3}' | grep $i`" != "" ]; then
		userchoice[$j]="`grep $i /etc/passwd | awk -F ":" '{print $1}'`"
		j=`expr $j + 1`
	fi

	done
	done

SKELUSER=`$DIALOG $TITLE"$TITLETEXT" $MENU $TEXT"\n$LOCAL48 \n$LOCAL49" $MSGBOX \
${userchoice[0]} ${userchoice[0]} \
${userchoice[1]} ${userchoice[1]} \
${userchoice[2]} ${userchoice[2]} \
${userchoice[3]} ${userchoice[3]} \
${userchoice[4]} ${userchoice[4]} \
${userchoice[5]} ${userchoice[5]} \
${userchoice[6]} ${userchoice[6]} \
${userchoice[7]} ${userchoice[7]} \
${userchoice[8]} ${userchoice[8]} \
${userchoice[9]} ${userchoice[9]}`

	SKELUSER=`echo $SKELUSER | cut -d "|" -f 1`

	if [ "$SKELUSER" != "" ]; then

		cd `grep "^$SKELUSER:" /etc/passwd | awk -F ":" '{print $6}'`
		PWD=`pwd`
		TESTUSER=`grep "$PWD" /etc/passwd | awk -F ":" '{print $1}'`

		if [ "$TESTUSER" != "$SKELUSER" ]; then
			$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL50 \n$LOCAL51"
			echo "need to be in the user directory....exiting"
			mainmenu
		fi

		$DIALOG $TITLE"$TITLETEXT" --no-buttons --progress --pulsate $TEXT"$LOCAL52 $SKELUSER $LOCAL53 \n\
$LOCAL54" &

		sparkybackup-skelcopy $SKELUSER

		killall -KILL yad

		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL55 $SKELUSER $LOCAL56\n\n$LOCAL51"

	else

		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL60 \n\n$LOCAL61"
		mainmenu

	fi
fi

mainmenu

}

distmenu () {
# create dist custom iso
$DIALOG $TITLE"$TITLETEXT" $YESNO $TEXT"$LOCAL57\n\n$LOCAL58\n\n$LOCAL59"

if [ "$?" != "0" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL46 \n$LOCAL47"
	exit 0 

else

	$SPARKYXTERM "sparkybackup dist"

	SQUASHFSSIZE=`ls -s $WORKDIR/sparkybackup-sys/ISOTMP/live/filesystem.squashfs | awk -F " " '{print $1}'`
	if [ "$SQUASHFSSIZE" -gt "3999999" ]; then
		$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL62 \n$LOCAL63\n\n$LOCAL64 \n$LOCAL65"
		exit 1
	fi
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL66\n$CUSTOMISO \n$CUSTOMISO.allsums.txt \n$CUSTOMISO.package-list.txt \n$LOCAL67 \n$WORKDIR/sparkybackup-sys \n\n$LOCAL68 \n$LOCAL69\n\n$LOCAL51"

# add info to log file that the sparkybackup is running via the yad gui
echo "------------------------------------------------------" >> $WORKDIR/sparkybackup.log
echo "sparkybackup is running via the sparkybackup-gui" >> $WORKDIR/sparkybackup.log
echo "------------------------------------------------------" >> $WORKDIR/sparkybackup.log

fi

mainmenu

}

cachemenu () {
$DIALOG $TITLE"$TITLETEXT" $YESNO $TEXT"$LOCAL70\n $LOCAL71"

if [ "$?" != "0" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL46 \n$LOCAL47"
	mainmenu

else
	$SPARKYXTERM "apt-get autoremove"
	$SPARKYXTERM "apt-get clean"

	TESTAPTITUDE="`which aptitude`"
	if [ "$TESTAPTITUDE" != "" ]; then
		$SPARKYXTERM "aptitude purge ~c"
	fi

mainmenu
fi

}

cleanmenu () {
$DIALOG $TITLE"$TITLETEXT" $YESNO $TEXT"$LOCAL73\n $LOCAL71"

if [ "$?" != "0" ]; then
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL46 \n$LOCAL47"
	mainmenu

else

	rm -rf $WORKDIR
	$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL75 \n$LOCAL51"
fi

mainmenu

}

mainmenu
