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
|
#!/usr/bin/env bash
####
# FILE NAME do-offline-updates.sh
#
# Authors:
# Gustav Hartvigsson 2024
# Distributed under the Cool Licence 1.1
#
####
__UPDATES_AVAILABLE=false
__DO_REBOOT=true
__DO_DOWNLOAD=true
__REBOOT_COMMAND="systemctl reboot"
__SANITY=true
__SCRIPT_ROOT=$(dirname $(readlink -f $0))
source $__SCRIPT_ROOT/useful.inc.sh
function __usage () {
echo " do-offline-updates.sh"
echo "Perform offline updates, if available."
echo ""
echo "--help -h"
echo " Show this help message."
echo ""
echo "--no-reboot"
echo " Do not perform an reboot."
echo ""
echo "--no-download --check-updates"
echo " Do not download updates."
echo " Will show if updates are available."
echo " Implies --no-reboot."
echo ""
}
function __sanity_check () {
# Check that we have the tools needed.
__find_tool systemctl
__find_tool pkcon
if [[ $__SANITY == false ]]; then
echo ""
echo "Please install the missing tools."
echo ""
exit 1
fi
}
function __check_for_updates () {
__silentpkcon get-updates
if [[ $? == 0 ]]; then
echo "Updates are available!"
echo ""
__UPDATES_AVAILABLE=true
else
__UPDATES_AVAILABLE=false
fi
}
function __download_updates () {
pkgcon update --download-only
if [[ $? == 0 ]];then
__UPDATES_AVAILABLE=true
else
## huh?
__UPDATES_AVAILABLE=false
fi
}
function __reboot () {
eval $__REBOOT_COMMAND
}
function __parse_args () {
if [[ -z "$1" ]]
then
echo "Try --help or -h."
exit 1
fi
while [[ $# -gt 0 ]]
do
case $1 in
-h|--help)
__usage
exit
shift
;;
--no-reboot)
__DO_REBOOT=false
shift
;;
--no-download|--check-updates)
__DO_REBOOT=false
__DO_DOWNLOAD=false
shift
;;
*)
echo "Unkown argument \"${1}\"."
exit 1
shift
;;
--)
shift
break
;;
esac
done
}
function __main () {
__satity_check
__parse_args $@
if [[ ( __DO_DOWNLOAD == true ) && ( __UPDATE_AVAILABLE == true ) ]]; then
__do_download
fi
if [[ ( __DO_REBOOT == true ) && ( __UPDATE_AVAILABLE == true ) ]]; then
__do_reboot
fi
}
__main $@
|