blob: 65acb8304c86f517b5592f0b6b4e719bbec1f7f0 (
plain)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
#
# . ./build.vars and set -o errexit -o noglob are assumed.
# See warning at the top of build.vars.
#
cpu_get_fnames() {
case "${cu_name}" in
infounzip|infozip)
cu_fname="${cu_url##*/}";
cu_fname_base="${cu_fname%%[0-9]*}";
cu_fname_ext="${cu_fname#${cu_fname_base}${cu_version}.}";
;;
libgpg_error)
cu_url_index="${cu_url%/*}/";
cu_fnames="$(wget ${WGET_ARGS} -qO- "${cu_url_index}" |\
sed -n '/href="[^"]\+"/s/^.*href="\([^"]\+\)".*$/\1/p')";
cu_fname_base="libgpg-error";
;;
libpthread_stubs)
cu_fname_base="libpthread-stubs";
;;
rxvt_unicode)
cu_fname_base="rxvt-unicode";
;;
the_silver_searcher)
cu_url_index="http://geoff.greer.fm/ag/";
cu_fnames="$(wget ${WGET_ARGS} -qO- ${cu_url_index} |\
sed -n '/href="[^"]\+"/{s/^.*href="\([^"]\+\)".*$/\1/;s/\/$//;p}')";
;;
util_linux)
cu_fname_base="util-linux";
cu_url_index="https://www.kernel.org/pub/linux/utils/util-linux/";
cu_fnames="$(wget ${WGET_ARGS} -qO- ${cu_url_index} |\
sed -n '/href="[^"]\+"/{s/^.*href="\([^"]\+\)".*$/\1/;s/\/$//;p}')";
;;
xcb_proto)
cu_fname_base="xcb-proto";
;;
*)
if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then
_cpugf_uname="${cu_url#*/github.com/}";
_cpugf_uname="${_cpugf_uname%%/*}";
_cpugf_pname="${cu_url#*/github.com/${_cpugf_uname}/}";
_cpugf_pname="${_cpugf_pname%%/*}";
cu_url_index="https://github.com/${_cpugf_uname%%/*}/${_cpugf_pname%%/*}/releases/";
unset _cpu_uname _cpu_pname;
cu_fnames="$(wget ${WGET_ARGS} -qO- ${cu_url_index} |\
sed -n '/<span class="tag-name">/s/^.*<span class="tag-name">\([a-zA-Z]\+-\|v\|\)\(.\+\)<\/span>.*$/\2/p')";
cu_fname_base="${cu_name}";
cu_fname_ext="${cu_fname#v${cu_version}.}";
fi;
;;
esac;
if [ -z "${cu_url_index}" ]; then
cu_url_index="${cu_url%/*}/";
cu_fnames="$(wget ${WGET_ARGS} -qO- "${cu_url_index}" |\
sed -n '/[hH][rR][eE][fF]="[^"]\+"/s/^.*[hH][rR][eE][fF]="\([^"]\+\)".*$/\1/p')";
fi;
: ${cu_fname:="${cu_url##*/}"};
: ${cu_fname_base:="${cu_fname%%-*}"};
: ${cu_fname_ext:="${cu_fname#${cu_fname_base}-${cu_version}.}"};
};
cpu_get_version() {
case "${cu_name}" in
infounzip|infozip)
if [ "${cu_fname#${cu_fname_base}}" != "${cu_fname}" ]\
&& [ "${cu_fname%.${cu_fname_ext}}" != "${cu_fname}" ]; then
cu_fname_version="${cu_fname%.${cu_fname_ext}}";
cu_fname_version="${cu_fname_version#*zip*}";
fi;
;;
mksh)
if [ "${cu_fname#${cu_fname_base}-}" != "${cu_fname}" ]\
&& [ "${cu_fname%.${cu_fname_ext}}" != "${cu_fname}" ]; then
cu_fname_version="${cu_fname%.${cu_fname_ext}}";
cu_fname_version="${cu_fname_version#*-R}";
fi;
;;
util_linux)
if [ "${cu_fname#${cu_fname_base}-}" = "${cu_fname}" ]\
&& [ "${cu_fname%.${cu_fname_ext}}" = "${cu_fname}" ]; then
cu_fname_version="${cu_fname%.${cu_fname_ext}}";
cu_fname_version="${cu_fname_version#v}";
fi;
;;
*)
if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then
if [ "${cu_fname#${cu_fname_base}-}" = "${cu_fname}" ]\
&& [ "${cu_fname%.${cu_fname_ext}}" = "${cu_fname}" ]; then
cu_fname_version="${cu_fname}";
fi;
elif [ "${cu_fname#${cu_fname_base}-}" != "${cu_fname}" ]\
&& [ "${cu_fname%.${cu_fname_ext}}" != "${cu_fname}" ]; then
cu_fname_version="${cu_fname#${cu_fname_base}-}";
cu_fname_version="${cu_fname_version%.${cu_fname_ext}}";
fi;
;;
esac;
};
check_pkg_updates() {
cu_name="${1}"; cu_version="${2}"; cu_url="${3}"; cu_url_type="${4}";
if match_list "${CHECK_UPDATES_SKIP}" " " "${cu_name}"; then
log_msg vnfo "Skipping \`${cu_name}' (set in \${CHECK_UPDATES_SKIP}.)";
return 0;
elif [ "${cu_url_type}" = "git" ]; then
log_msg vnfo "Skipping \`${cu_name}' (URL_TYPE is Git.)";
return 0;
elif [ -z "${cu_version}" -o -z "${cu_url}" ]; then
log_msg fail "Zero-length \${cu_version} and/or \${cu_url} for \`${cu_name}' (ignored.)";
return 0;
else
log_msg vnfo "Checking ${cu_name} v${cu_version} for updates.";
cpu_get_fnames; _cpu_versions="";
fi;
for cu_fname in ${cu_fnames}; do
cu_fname="${cu_fname##*/}"; cpu_get_version;
if [ -z "${cu_fname_version}" ] \
|| ! echo "${cu_fname_version}" | grep -Eq '^[-_.0-9a-zA-Z]+$' \
|| echo "${cu_fname_version}" | grep -Eq '^[_.a-zA-Z]+'; then
log_msg varn "Skipping \`${cu_fname_version}' (empty/invalid version.)";
else
_cpu_versions="${_cpu_versions:+${_cpu_versions} }${cu_fname_version}";
fi;
done;
if [ -z "${_cpu_versions}" ]; then
log_msg warn "No versions available for \`${cu_name}' (Filename URL: ${cu_url}, index URL: ${cu_url_index}).";
else
_cpu_versions="$(echo "${_cpu_versions}" |\
sed 's/ /\n/g' | sort -rV | uniq |\
head -n${CHECK_UPDATES_SHOW_NEW:-6} |\
paste -d" " -s)";
case "${cu_name}" in
mksh)
cu_version="${cu_version#R}";
esac;
if [ "${_cpu_versions%% *}" != "${cu_version}" ]; then
log_msg info "New release(s) available for ${cu_name} v${cu_version}: ${_cpu_versions}.";
else
log_msg vnfo "${cu_name} v${cu_version} is up to date.";
fi;
fi;
unset cu_fname cu_fname_base cu_fname_ext cu_fnames cu_fname_version \
cu_name cu_url cu_url_fname cu_url_fname_base cu_url_fname_ext \
cu_url_index cu_url_type cu_version _cpu_versions;
};
# vim:filetype=sh
|