#!/bin/bash

# Script to handle partial upgrades.
# Should not be launched manually

whoami | grep root || {
    exit 1
}

[ -z $1 ] && {
    # no option --delete
    exit 1
}

LOG="/var/log/uncom-partial-update.log"

date >> $LOG
packages=`echo $1 | awk -F \--delete= '{print $NF}'`
echo "\$@ = $@; packages = $packages" >> $LOG

# Check that no essential packs are removed
echo $package | grep -E "gdm3|uncom-license|uncom-setup|uncominstall|gnome-session|gnome-shell" && {
    echo "Error: package to remove is protected, exiting" >> $LOG
    exit 2
}

for pack in `echo $packages`
do
    # Find & install replacement package
    count=`apt-cache showpkg $pack | grep -A5 "^Reverse Provides:" | grep -v "Provides" | wc -l`
    echo "package $pack: count = $count" >> $LOG
    if [ "$count" == "1" ]
    then new_pack=`apt-cache showpkg $pack | grep -A5 "^Reverse Provides:" | tail -1 | awk '{print $1}'`
        echo "Installing $new_pack" >> $LOG
        sudo apt install -y $new_pack 2>&1 | grep "" >> $LOG
        LANG=C apt -qq list $new_pack 2>&1 | grep "\[installed\]" 2>&1 > /dev/null ; code=$?
        if [ $code -eq 1 ]
        then echo "Error" >> $LOG
            exit 2
        fi
    else echo "Ignore $pack" >> $LOG
    fi
done
echo "Final_success" >> $LOG

