1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/sh
#
# Copyright (C) 2019, 2022 Etersoft
# Copyright (C) 2019, 2022 Vitaly Lipatov <lav@etersoft.ru>
#
# 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/>.
#
epm_full_upgrade_help()
{
get_help HELPCMD $SHAREDIR/epm-full_upgrade
cat <<EOF
You can run with --interactive if you can skip some steps interactivelyю
Also you can comment out full_upgrade parts in /etc/eepm/eepm.conf config.
Examples:
epm full-upgrade [--interactive]
epm full-upgrade --no-flatpack
EOF
}
epm_full_upgrade()
{
while [ -n "$1" ] ; do
case "$1" in
"-h"|"--help"|"help") # HELPCMD: help
epm_full_upgrade_help
return
;;
"--interactive") # HELPCMD: ask before every step
;;
"--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
;;
"--no-clean") # HELPCMD: no clean after upgrade
full_upgrade_no_clean=1
;;
esac
shift
done
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
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
confirm_action "Upgrade kernel and kernel modules? [Y/n]" || full_upgrade_no_kernel_update=1
if [ -z "$full_upgrade_no_kernel_update" ] ; then
[ -n "$quiet" ] || echo
docmd epm $dryrun update-kernel || fatal "updating of the kernel is failed."
fi
# disable epm play --update for non ALT Systems
[ "$BASEDISTRNAME" = "alt" ] || full_upgrade_no_epm_play=1
confirm_action "Upgrade packages installed via epm play? [Y/n]" || full_upgrade_no_epm_play=1
if [ -z "$full_upgrade_no_epm_play" ] ; then
[ -n "$quiet" ] || echo
docmd epm $dryrun play --update all || fatal "updating of applications installed via epm play is failed."
fi
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
[ -n "$quiet" ] || echo
docmd flatpak update $(subst_option non_interactive --assumeyes) $(subst_option dryrun --no-deploy)
fi
fi
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
[ -n "$quiet" ] || echo
sudocmd snap refresh $(subst_option dryrun --list)
fi
fi
confirm_action "Do epm clean? [Y/n]" || full_upgrade_no_clean=1
if [ -z "$full_upgrade_no_clean" ] ; then
[ -n "$quiet" ] || echo
docmd epm $dryrun clean
fi
}