#!/bin/sh

# Copyright (c) ULBSD Project Team. All rights reserved.
# $Id: ulbsd-update 12 2020-07-12 18:01:59Z sv $

if [ "${1}" == "menu" ]
then

# Маскировка ненужных ярлыков в меню программ и kservices

    echo "Changing some *.desktop files for hiding unnecessary applications:"

    NODISPLAY="usr_local_lib_qt5_bin_assistant \
               usr_local_lib_qt5_bin_designer \
               x11vnc xterm"
    cd /usr/local/share/applications
    for filename in $NODISPLAY
    do
        /usr/bin/sed -i '' -e '/NoDisplay=/Id' $filename.desktop
        /bin/echo "NoDisplay=true" >> $filename.desktop
    done
    pkg check --recompute qt5-assistant qt5-designer x11vnc xterm

    NODISPLAY="kcm_kaccounts kcm_printer_manager wayland"
    cd /usr/local/share/kservices5
    for filename in $NODISPLAY
    do
        /usr/bin/sed -i '' -e '/NoDisplay=/Id' $filename.desktop
        /bin/echo "NoDisplay=true" >> $filename.desktop
    done
    pkg check --recompute kaccounts-integration print-manager plasma5-kinfocenter

# Создание нужных ярлыков в меню программ

    echo "Writing necessary *.desktop files:"
    cd /usr/local/share/ulbsd/compile/apps
    cp -Rvi * /usr/local/share/applications/
    pkg check --recompute libreoffice ssvnc wifimgr

# Очистка кэша plasma5

    find /home /root -depth -name '.cache' -exec sh -c 'rm -R {}/*' \;

elif [ "${1}" == "cfgs" ]
then

# Восстановление нужных конфигурационных файлов

    echo "Overwriting existing configuration files:"
    cd /usr/local/share/ulbsd/compile/cfgs
    cp -Rvi * /
    pkg check --recompute sddm plasma5-kinfocenter

# Удаление встроенных программ печати

    cups_installed=`pkg info | grep cups`
    if [ "$cups_installed" != "" ]
    then
        BIN='/usr/bin/'
        LBIN='/usr/local/bin/'
        UTILITES="lp lpq lpr lprm"
        for util in $UTILITES
        do
            find "${BIN}" -name "${util}" -type f -size +0c -exec sh -c 'mv -fv {} {}_ ; echo Moved {}' \;
            ln -sv ${LBIN}${util} ${BIN}${util}
        done
    else
        echo "Please install the 'cups' package manually, then run 'ulbsd-update cfgs' again"
    fi

# Создание ссылки для печати из wine

    if [ -f /usr/local/etc/printcap ]
    then
        rm -v /etc/printcap
        ln -sv /usr/local/etc/printcap /etc/printcap
    fi

# Перелинковка иконок knemo из papirus-icon-theme

    echo "Relinking papirus-icon-theme icons for knemo:"
    ICONSDIR='/usr/local/share/icons'
    KNEMODIR="/usr/local/share/ulbsd/compile/knemo/src/knemod/themes"
    ICONS="error idle offline receive transmit transmit-receive" 
    for icon in $ICONS
    do
        VARIANTS="network wireless"
        for variant in $VARIANTS
        do
            filename="knemo-${variant}-${icon}.svg"
            symlink="${KNEMODIR}/breeze/${filename}"
            find "${ICONSDIR}/Papirus-Light/" -name ${filename} -exec sh -c "ln -sfv ${symlink} {}" \;
            find "${ICONSDIR}/ePapirus/" -name ${filename} -exec sh -c "ln -sfv ${symlink} {}" \;
            symlink="${KNEMODIR}/breeze-dark/${filename}"
            find "${ICONSDIR}/Papirus/" -name ${filename} -exec sh -c "ln -sfv ${symlink} {}" \;
        done
    done

    pkg check --recompute papirus-icon-theme

# Очистка кэша plasma5

    find /home /root -depth -name '.cache' -exec sh -c 'rm -R {}/*' \;

elif [ "${1}" == "patches" ]
then

# Патчи и русификация для bsdconfig

    cd /usr/libexec/bsdconfig/070.usermgmt/
    patch -f userdel /usr/local/share/ulbsd/patches/bsdconfig/usermgmt/userdel.patch
    patch -f useredit /usr/local/share/ulbsd/patches/bsdconfig/usermgmt/useredit.patch
    cd /usr/libexec/bsdconfig/070.usermgmt/include/
    patch -f messages.subr /usr/local/share/ulbsd/patches/bsdconfig/usermgmt/include/messages.subr.patch
    cd /usr/share/bsdconfig/
    patch -f dialog.subr /usr/local/share/ulbsd/patches/bsdconfig/share/dialog.subr.patch
    cd /usr/share/bsdconfig/usermgmt/
    patch -f group_input.subr /usr/local/share/ulbsd/patches/bsdconfig/share/group_input.subr.patch
    cd /usr/share/bsdconfig/networking/
    patch -f netmask.subr /usr/local/share/ulbsd/patches/bsdconfig/share/netmask.subr.patch
    cd /usr/share/bsdconfig/
    patch -f strings.subr /usr/local/share/ulbsd/patches/bsdconfig/share/strings.subr.patch
    cd /usr/local/share/ulbsd/patches/bsdconfig/usermgmt/
    cp -fv INDEX.ru_RU.UTF-8 /usr/libexec/bsdconfig/070.usermgmt/
    cd /usr/local/share/ulbsd/patches/bsdconfig/usermgmt/include
    cp -fv messages.subr.ru_RU.UTF-8 /usr/libexec/bsdconfig/070.usermgmt/include/
    cd /usr/local/share/ulbsd/patches/bsdconfig/networking/
    cp -fv INDEX.ru_RU.UTF-8 /usr/libexec/bsdconfig/120.networking/
    cd /usr/local/share/ulbsd/patches/bsdconfig/networking/include
    cp -fv messages.subr.ru_RU.UTF-8 /usr/libexec/bsdconfig/120.networking/include/

elif [ "${1}" == "check" ]
then

    release=`uname -r | cut -d '-' -f1`
    cur_branch=`uname -r | cut -d '-' -f2,3`
    new_branch=`fetch -qo - http://svn.freebsd.org/base/releng/${release}/sys/conf/newvers.sh | grep -E "BRANCH=" | head -1 | cut -d '"' -f2`
    if [ "${cur_branch}" == "${new_branch}" ]
    then
        echo No update required.
    else
        echo Update required. ${new_branch} available.
    fi

else

    /usr/sbin/freebsd-update $*

fi
