epm-full_upgrade 4.62 KB
Newer Older
Vitaly Lipatov's avatar
Vitaly Lipatov committed
1 2
#!/bin/sh
#
3 4
# Copyright (C) 2019, 2022  Etersoft
# Copyright (C) 2019, 2022  Vitaly Lipatov <lav@etersoft.ru>
Vitaly Lipatov's avatar
Vitaly Lipatov committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

20 21
epm_full_upgrade_help()
{
22 23
            get_help HELPCMD $SHAREDIR/epm-full_upgrade
    cat <<EOF
24
You can run with --interactive if you can skip some steps interactively.
25 26
Also you can comment out full_upgrade parts in /etc/eepm/eepm.conf config.
Examples:
27
  epm full-upgrade [--auto]
28
  epm full-upgrade [--interactive]
29 30 31 32 33
  epm full-upgrade --no-flatpack
EOF
}


Vitaly Lipatov's avatar
Vitaly Lipatov committed
34 35
epm_full_upgrade()
{
36

37 38 39 40 41 42
    while [ -n "$1" ] ; do
        case "$1" in
            "-h"|"--help"|"help")      # HELPCMD: help
                epm_full_upgrade_help
                return
                ;;
43 44
            "--interactive")           # HELPCMD: ask before every step
                ;;
45 46 47 48 49 50 51 52 53 54 55 56
            "--no-epm-play")           # HELPCMD: skip epm play during full upgrade
                full_upgrade_no_epm_play=1
                ;;
            "--no-flatpack")           # HELPCMD: skip flatpack update during full upgrade
                full_upgrade_no_flatpack=1
                ;;
            "--no-snap")           # HELPCMD: skip snap update during full upgrade
                full_upgrade_no_snap=1
                ;;
            "--no-kernel-update")  # HELPCMD: skip kernel update during full upgrade
                full_upgrade_no_kernel_update=1
                ;;
57 58 59
            "--no-clean")          # HELPCMD: no clean after upgrade
                full_upgrade_no_clean=1
                ;;
60 61 62
        esac
        shift
    done
63

64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
confirm_action()
{
    [ -n "$interactive" ] || return 0
    local response
    # call with a prompt string or use a default
    read -r -p "${1:-Are you sure? [Y/n]} " response
    case $response in
        [yY][eE][sS]|[yY]|"")
            true
            ;;
        *)
            false
            ;;
    esac
}

    confirm_action "Update repository info? [Y/n]" || full_upgrade_no_update=1
    if [ -z "$full_upgrade_no_update" ] ; then
        [ -n "$quiet" ] || echo
        docmd epm update || fatal "repository updating is failed."
    fi

Vitaly Lipatov's avatar
Vitaly Lipatov committed
86

87 88 89 90 91
    confirm_action "Do upgrade installed packages? [Y/n]" || full_upgrade_no_upgrade=1
    if [ -z "$full_upgrade_no_upgrade" ] ; then
        [ -n "$quiet" ] || echo
        docmd epm $dryrun upgrade || fatal "upgrading of the system is failed."
    fi
Vitaly Lipatov's avatar
Vitaly Lipatov committed
92

93 94

    confirm_action "Upgrade kernel and kernel modules? [Y/n]" || full_upgrade_no_kernel_update=1
95 96
    if [ -z "$full_upgrade_no_kernel_update" ] ; then
        [ -n "$quiet" ] || echo
97
        docmd epm $dryrun update-kernel || fatal "updating of the kernel is failed."
98
    fi
99

100 101
    # disable epm play --update for non ALT Systems
    [ "$BASEDISTRNAME" = "alt" ] || full_upgrade_no_epm_play=1
102

103 104

    confirm_action "Upgrade packages installed via epm play? [Y/n]" || full_upgrade_no_epm_play=1
105 106
    if [ -z "$full_upgrade_no_epm_play" ] ; then
        [ -n "$quiet" ] || echo
107
        if [ -n "$force" ] ; then
108
            docmd epm $dryrun play #|| fatal "updating of applications installed via epm play is failed."
109
        else
110
            docmd epm $dryrun play --update all #|| fatal "updating of applications installed via epm play is failed."
111
        fi
112
    fi
113

114 115 116 117

    if is_command flatpak ; then
        confirm_action "Upgrade installed flatpak packages? [Y/n]" || full_upgrade_no_flatpak=1
        if [ -z "$full_upgrade_no_flatpak" ] ; then
118
            [ -n "$quiet" ] || echo
119
            docmd flatpak update $(subst_option non_interactive --assumeyes) $(subst_option dryrun --no-deploy)
120 121
        fi
    fi
122

123 124 125 126

    if is_command snap && serv snapd exists && serv snapd status >/dev/null ; then
        confirm_action "Upgrade installed snap packages? [Y/n]" || full_upgrade_no_snap=1
        if [ -z "$full_upgrade_no_snap" ] ; then
127
            [ -n "$quiet" ] || echo
128
            sudocmd snap refresh $(subst_option dryrun --list)
129 130
        fi
    fi
131

132 133

    confirm_action "Do epm clean? [Y/n]" || full_upgrade_no_clean=1
134 135 136 137
    if [ -z "$full_upgrade_no_clean" ] ; then
        [ -n "$quiet" ] || echo
        docmd epm $dryrun clean
    fi
Vitaly Lipatov's avatar
Vitaly Lipatov committed
138
}