#!/bin/sh
###############################
# Arch Linux Updater Setup #
# By Cooleech, Copyleft 2023. #
###############################
Version="1.9"
# Uvezi postavke korisničkih mapa
. ~/.config/user-dirs.dirs
# Provjera nove verzije
GetLatest=`curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/CHANGELOG | head -n 1`
if [ "$GetLatest" != "" ]; then
GetLatest="${GetLatest:1:3}"
if [ "$GetLatest" != "$Version" ]; then
ChangeLog=`curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/CHANGELOG`
zenity --question --width 350 --title "Updater - Setup" --text "Dostupna je novija verzija!\n\nŠto je novo:\n\n$ChangeLog\n\nŽelite li je preuzeti?" --cancel-label="Ne, hvala" --ok-label="Preuzmi"
if [ $? = 0 ]; then
curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/Arch_Linux_Updater_Setup -o $HOME/Arch_Linux_Updater_Setup.sh
chmod 777 $HOME/Arch_Linux_Updater_Setup.sh
sh $HOME/Arch_Linux_Updater_Setup.sh
exit
fi
fi
fi
# Provjera dal' već postoji skripta
if [ -f ~/.local/Updater ]; then
zenity --question --width 350 --height 300 --title "Updater - Setup" --text "Što želite napraviti s ovom skriptom?" --cancel-label "Odinstaliraj skriptu" --ok-label "Nadogradi skriptu"
if [ $? != 0 ]; then
rm ~/.local/Updater
rm ~/.local/Updater.conf
rm $XDG_DESKTOP_DIR/Nadograditelj.desktop
zenity --info --width 200 --title "Updater - Setup" --text "Updater je odinstaliran. ;(" --timeout 2
exit
fi
fi
# Kratki info o skripti
zenity --question --width 350 --height 300 --title "UPOZORENJE" --text "Ovaj alat služi isključivo kao GUI zamjena za naredbu\n\n sudo pacman -Syu --noconfirm --overwrite \"*\" \n\nte nije preporučljivo koristiti je ako sustav nadograđujete povremeno (zbog dodataka --noconfirm i --overwrite koji omogućuju automatsku nadogradnju bez da vas pita za pristanak na bilo što).\n\nAko ste spremni prihvatiti EVENTUALNI RIZIK toga, kliknite na \"Nastavi instalaciju\", u suprotnom kliknite na \"Izlaz\"." --cancel-label "Izlaz" --ok-label "Nastavi instalaciju"
if [ $? != 0 ]; then
exit
fi
# Upit za nadogradnju bez passworda
zenity --question --width 350 --height 300 --title "Updater - Setup" --text "Želite li imati nadogradnje bez upita za vašom korisničkom lozinkom?\n\n\nNAPOMENA:\n\nPrihvaćanjem ove ponude umanjujete sigurnost vašeg sustava jer će vaša lozinka biti pohranjena u skripti u tekstualnom obliku (bez enkripcije)!" --cancel-label "Ne, hvala" --ok-label "U redu je"
if [ $? = 0 ]; then
Pass=`zenity --entry --hide-text --width 434 --height 300 --title "Updater - Setup" --text "Upišite lozinku korisnika $(whoami):" --cancel-label "Odustani" --ok-label "Zapamti lozinku"`
else
Pass=""
fi
echo "#!/bin/sh
############################
# Arch Linux Updater v$Version #
# Cooleech, Copyleft 2023. #
############################
. ~/.local/Updater.conf # Uvezi zadnju objavu verzije
Title=\"Nadograditelj v$Version\"
Pass=\"$Pass\"
if [ \"\$Pass\" = \"\" ]; then
Pass=\`zenity --entry --width 300 --hide-text --title \"\$Title\" --text \"Za nastavak upišite lozinku korisnika \$(whoami)\" --cancel-label=\"Odustani\" --ok-label=\"Potvrdi\"\`
if [ \$? != 0 ]; then
exit 1
fi
fi
which sudo
if [ \$? != 0 ]; then
zenity --error --width 300 --title \"\$Title\" --text \"Nemate instaliran sudo paket pa skripta neće uopće raditi.\nPaket možete instalirati kao root naredbom:\n\npacman -S sudo\n\nte si morate dozvoliti upotrebu sudo naredbe:\n\nhttps://wiki.archlinux.org/title/Sudo#Configuration\n\nSkripta će se ugasiti.\"
exit 1
fi
pidof pacman
if [ \$? != 0 ]; then
if [ -e /var/lib/pacman/db.lck ]; then
echo \"\$Pass\" | sudo -S rm /var/lib/pacman/db.lck
fi
else
zenity --warning --title \"\$Title\" --text \"Pacman je već pokrenut! Pričekajte da završi s radom\nili ga prisilno zaustavite te obrišite /var/lib/pacman/db.lck datoteku!\"
fi
echo \"\$Pass\" | sudo -S pacman -Sy --needed archlinux-keyring
# Provjera slobodnog prostora na disku
FreeSpace=\`df --output=pcent /var | tail -n 1 | tr -d \" %\"\`
if [ \$FreeSpace -gt 85 ]; then
zenity --question --width 300 --title \"\$Title\" --text \"Ponestaje slobodnog prostora na disku!\\n\\nTrenutno zauzeće diska: \$FreeSpace %\\n\\nPokušajte osloboditi prostor na disku brisanjem starih nadogradnji.\\n\\n Pobrisati stare nadogradnje sada?\"
if [ \$? = 0 ]; then
echo \"\$Pass\" | sudo -S pacman -Sc --noconfirm
fi
fi
# Provjera nove verzije
GetLatest=\`curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/CHANGELOG | head -n 1\`
if [ \"\$GetLatest\" != \"\" ]; then
GetLatest=\"\${GetLatest:1:3}\"
if [ \"\$SeenLatest\" != \"\$GetLatest\" ]; then
ChangeLog=\`curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/CHANGELOG\`
zenity --question --width 350 --title \"\$Title\" --text \"Dostupna je novija verzija!\\n\\nŠto je novo:\\n\\n\$ChangeLog\\n\\nŽelite li je preuzeti?\" --cancel-label=\"Ne, hvala\" --ok-label=\"Preuzmi\"
if [ \$? = 0 ]; then
curl -s https://gitlab.com/Cooleech/Arch_Linux_Updater/raw/master/Arch_Linux_Updater_Setup -o \$HOME/Arch_Linux_Updater_Setup.sh
chmod 777 \$HOME/Arch_Linux_Updater_Setup.sh
sh \$HOME/Arch_Linux_Updater_Setup.sh
exit
else
echo -e \"# Ne uređuj ovu datoteku ako ne znaš što radiš #\\nSeenLatest=\\\"\$GetLatest\\\"\" > ~/.local/Updater.conf # Da ne gnjavi svaki put za update, spremi provjerenu zadnju verziju
fi
fi
fi
which xrandr
if [ \$? != 0 ]; then
zenity --question --width 300 --title \"\$Title\" --text \"Nemate instaliran xorg-xrandr paket koji je potreban za punu funkcionalnost skripte. Ako želite, skripta će ga instalirati u pozadini.\\n\\nŽelite li ga sada instalirati?\" --ok-label \"Instaliraj\" --cancel-label \"Ne, hvala\"
if [ \$? = 0 ]; then
echo \"\$Pass\" | sudo -S pacman -Sy xorg-xrandr --noconfirm
else
zenity --warning --width 250 --title \"\$Title\" --text \"Skripta će pretpostaviti da je širina vašeg monitora 1024 pixela.\"
fi
MeWidth=\"1024\"
else
MeWidth=\`xrandr | grep current\`
MeWidth=\"\${MeWidth//*current /}\" # Ukloni sve nepotrebno s lijeve strane ispisa
MeWidth=\"\${MeWidth// x*/}\" # Ukloni sve nepotrebno s desne strane ispisa
fi
which notify-send
if [ \$? = 0 ]; then
notify-send \"\$Title\" \"Provjera nadogradnji u tijeku...\" --icon dialog-information
echo \"\$Pass\" | sudo -S pacman -Syu 2>&1 > /tmp/updates
else
(
echo \"# Provjera nadogradnji u tijeku...\"
echo \"\$Pass\" | sudo -S pacman -Syu 2>&1 > /tmp/updates
) | zenity --width 400 --progress --title \"\$Title\" --text \"Provjera nadogradnji\" --percentage 0 --auto-close --pulsate --no-cancel
fi
Upd8s=\`cat /tmp/updates\`
Upd8s=\"\${Upd8s//\\\\t/}\"
Upd8s=\"\${Upd8s//Total Download Size:/Ukupna veličina preuzimanja:}\"
Upd8s=\"\${Upd8s//Total Installed Size:/Ukupna veličina instaliranog : }\"
Upd8s=\"\${Upd8s//Net Upgrade Size: /Veličina mrežne nadogradnje:}\"
case \"\$Upd8s\" in
*\" sukobu \"*|*\" conflict \"*) # (conflicting packages)
Upd8s=\"\${Upd8s// }\"
Upd8s=\"\${Upd8s//*::/::}\"
Upd8s=\"\${Upd8s//\(*\)/}\"
zenity --error --title \"\$Title\" --text \"Paketi su u sukobu:\n\n\$Upd8s\n\nNadogradnja traži ručnu intervenciju, u terminalu upiši:\n\nsudo pacman -Syu\"
exit 4
;;
esac
Upd8s=\"\${Upd8s//*\(/}\"
Upd8sNo=\"\${Upd8s//\)*/}\"
Upd8s=\"\${Upd8s//\$Upd8sNo\) /\\\\n}\"
Upd8s=\"\${Upd8s//::*\]/}\"
case \"\$Upd8s\" in
*ništa*|*nothing*) # nema ništa za učiniti | there is nothing to do
which notify-send
if [ \$? = 0 ]; then
notify-send \"\$Title\" \"Nema novih nadogradnji!\" --icon dialog-information
else
zenity --info --width 200 --title \"\$Title\" --text \"Nema novih nadogradnji!\" --timeout 2
fi
exit 0
;;
*neto*lozin*|*incorr*passw*) # sudo: 1 netočni pokušaj unosa lozinke | sudo: 1 incorrect password attempt
zenity --error --width 200 --title \"\$Title\" --text \"Pogrešna korisnička lozinka!\" --timeout 2
exit 1
;;
*neusp*sink*|*fail*synch*) # neuspjela sinkronizacija svih baza podataka | failed to synchronize all databases
zenity --info --width 250 --title \"\$Title\" --text \"Provjerite vašu internetsku vezu i pokušajte opet.\"
exit 2
;;
*lomi*zavis*|*break*depend*) # lomi zavisnost 'PAKETA' | breaks dependency 'PACKAGE'
zenity --error --width 250 --title \"\$Title\" --text \"Instaliranje nadogradnji lomi zavisnosti!\"
exit 3
;;
*)
case \"\$Upd8sNo\" in
*data*)
zenity --error --width 250 --title \"\$Title\" --text \"Provjerite vašu internetsku vezu i pokušajte opet.\"
exit 1
;;
?)
MeWidth=\`echo \$((MeWidth / 5))\`
;;
1?|2?)
MeWidth=\`echo \$((MeWidth / 4))\`
;;
3?|4?|5?)
MeWidth=\`echo \$((MeWidth / 3))\`
;;
6?|7?|8?|9?)
MeWidth=\`echo \$((MeWidth / 2))\`
;;
*)
MeWidth=\`echo \$((MeWidth - 84))\` # Oduzeta veličina obruba i ikone na dialogu je oko 84 pixela
;;
esac
zenity --question --width \$MeWidth --title \"\$Title\" --text \"Ukupan broj nadogradnji: \$Upd8sNo\\n \$Upd8s\\n\\nNadograditi sada?\" --cancel-label \"Odustani\" --ok-label \"Nadogradi\"
if [ \$? = 0 ]; then
(
echo \"# Instaliranje nadogradnji. Molim, pričekajte...\"
echo \"\$Pass\" | sudo -S pacman -Syu --noconfirm --overwrite \"*\"
echo \"\$?\" > /tmp/pacexit
) | zenity --width 400 --progress --title \"\$Title\" --text \"\" --percentage 0 --auto-close --pulsate --no-cancel
ExitCode=\`cat /tmp/pacexit\`
if [ \$ExitCode = 0 ]; then
which notify-send
if [ \$? = 0 ]; then
notify-send \"\$Title\" \"Vaš sustav je nadograđen!\" --icon dialog-information
else
zenity --info --width 200 --title \"\$Title\" --text \"Vaš sustav je nadograđen!\\n\\n\$(date '+%A, %d. %B %Y. @ %T')\" --timeout 2
fi
else
zenity --error --width 200 --title \"\$Title\" --text \"Nastala je neka greška prilikom nadogradnji. :(\\nPacman Exit Code: \$ExitCode\"
fi
fi
;;
esac
exit" > ~/.local/Updater
chmod 700 ~/.local/Updater
# Da ne gnjavi svaki put za update, spremi zadnju provjerenu verziju
echo -e "# Ne uređuj ovu datoteku ako ne znaš što radiš #\nSeenLatest=\"$GetLatest\"" > ~/.local/Updater.conf
echo "[Desktop Entry]
Type=Application
Exec=sh $HOME/.local/Updater
Icon=system-software-update
Name=Nadograditelj" > $XDG_DESKTOP_DIR/Updater.desktop
chmod 700 $XDG_DESKTOP_DIR/Updater.desktop
zenity --info --width 200 --title "Updater - Setup" --text "Updater je uspješno instaliran. :)" --timeout 2
exit