Annotation of /trunk/pkgtools/up2date.sh
Parent Directory | Revision Log
Revision 3112 -
(hide annotations)
(download)
(as text)
Fri Mar 15 11:30:25 2019 UTC (5 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 28588 byte(s)
Fri Mar 15 11:30:25 2019 UTC (5 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 28588 byte(s)
-include mage.rc/rc.global, added utf8encode() function and use it, use upsort() and tarball functions for better version detection and added a bunch of small fixes
1 | niro | 2017 | #!/bin/bash |
2 | |||
3 | source /usr/lib/mage/mage4.functions.sh | ||
4 | source /usr/lib/mage/smage2.functions.sh | ||
5 | niro | 3112 | source /etc/mage.rc.global |
6 | source /etc/mage.rc | ||
7 | niro | 2017 | |
8 | # timeout in seconds | ||
9 | niro | 2106 | LYNX_CONNECT_TIMEOUT=10 |
10 | niro | 2111 | LYNX_READ_TIMEOUT=10 |
11 | niro | 3112 | #LYNX_OPTIONS="-pauth=user:pass" |
12 | niro | 2017 | |
13 | ## only for tests -> normally in /etc/rc.d/init.d/functions | ||
14 | COLRED="\033[1;6m\033[31m" | ||
15 | COLGREEN="\033[1;6m\033[32m" | ||
16 | COLYELLOW="\033[1;6m\033[33m" | ||
17 | COLBLUE="\033[1;6m\033[34m" | ||
18 | COLMAGENTA="\033[1;6m\033[35m" | ||
19 | COLWHITE="\033[1;6m\033[37m" | ||
20 | COLGRAY="\033[0;6m\033[37m" | ||
21 | COLBOLD="\033[1m" | ||
22 | COLDEFAULT="\033[0m" | ||
23 | |||
24 | if [[ ${NOCOLORS} = true ]] | ||
25 | then | ||
26 | COLRED="" | ||
27 | COLGREEN="" | ||
28 | COLYELLOW="" | ||
29 | COLBLUE="" | ||
30 | COLMAGENTA="" | ||
31 | COLWHITE="" | ||
32 | COLGRAY="" | ||
33 | COLBOLD="" | ||
34 | COLDEFAULT="" | ||
35 | fi | ||
36 | |||
37 | die() { echo "Error: $@"; exit 1; } | ||
38 | |||
39 | niro | 3112 | #sminclude() { true; } |
40 | #msetfeature() { true; } | ||
41 | #mqueryfeature() { true; } | ||
42 | #haskell_enable_feature() { true; } | ||
43 | #haskell_disable_feature() { true; } | ||
44 | niro | 2017 | |
45 | niro | 3112 | SILENT=1 |
46 | FVERBOSE=off | ||
47 | |||
48 | utf8encode() | ||
49 | { | ||
50 | iconv --from-code=ISO_8859-15 --to-code=UTF-8 $@ | ||
51 | } | ||
52 | |||
53 | niro | 2017 | urlencode() |
54 | { | ||
55 | local uri="$@" | ||
56 | |||
57 | # fix percent (do this first!!) | ||
58 | uri=$(echo ${uri} | sed 's:%:%25:g') | ||
59 | |||
60 | # fix spaces | ||
61 | uri=$(echo ${uri} | sed 's:\ :%20:g') | ||
62 | |||
63 | # fix less than | ||
64 | uri=$(echo ${uri} | sed 's:<:%3C:g') | ||
65 | |||
66 | # fix greater than | ||
67 | uri=$(echo ${uri} | sed 's:>:%3E:g') | ||
68 | |||
69 | # fix pound | ||
70 | uri=$(echo ${uri} | sed 's:#:%23:g') | ||
71 | |||
72 | # fix curly brace left | ||
73 | uri=$(echo ${uri} | sed 's:{:%7B:g') | ||
74 | |||
75 | # fix curly brace right | ||
76 | uri=$(echo ${uri} | sed 's:}:%7D:g') | ||
77 | |||
78 | # fix square bracket left | ||
79 | uri=$(echo ${uri} | sed 's:\[:%5B:g') | ||
80 | |||
81 | # fix square bracket right | ||
82 | uri=$(echo ${uri} | sed 's:\]:%5D:g') | ||
83 | |||
84 | |||
85 | # return | ||
86 | echo "${uri}" | ||
87 | } | ||
88 | |||
89 | niro | 3112 | upsort() |
90 | niro | 2017 | { |
91 | niro | 3112 | local allversions="$@" |
92 | [[ -n ${allversions} ]] || die "upsort(): no versions given" | ||
93 | niro | 2017 | |
94 | niro | 3112 | if [ -x /home/tjoke/archlinux_version/highestver ] |
95 | then | ||
96 | /home/tjoke/archlinux_version/highestver ${allversions} | ||
97 | else | ||
98 | for i in ${allversions} | ||
99 | do | ||
100 | echo "${i}" | ||
101 | done | sort -g | tac | head -n 1 | ||
102 | fi | ||
103 | } | ||
104 | niro | 2111 | |
105 | niro | 3112 | upsort_pipe() |
106 | { | ||
107 | local data | ||
108 | local versions | ||
109 | |||
110 | versions="" | ||
111 | while read data | ||
112 | do | ||
113 | versions+="${data} " | ||
114 | done | ||
115 | |||
116 | upsort ${versions} | ||
117 | niro | 2017 | } |
118 | |||
119 | niro | 3112 | #highesttarball() |
120 | #{ | ||
121 | # local suffix=bz2 | ||
122 | # local seperator="-" | ||
123 | # [[ ! -z $1 ]] && suffix="$1" | ||
124 | # local data | ||
125 | # local version | ||
126 | # | ||
127 | # [[ ! -z ${UP2SEPERATOR} ]] && seperator="${UP2SEPERATOR}" | ||
128 | # [[ ${UP2SEPERATOR} = NULL ]] && seperator="" | ||
129 | # | ||
130 | # case ${suffix} in | ||
131 | # tbz2|tgz|zip) | ||
132 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
133 | # then | ||
134 | # grep "\(\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/" | upsort_pipe | ||
135 | # else | ||
136 | # grep "\(\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/" | upsort_pipe | ||
137 | # fi | ||
138 | # ;; | ||
139 | # *) | ||
140 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
141 | # then | ||
142 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/" | upsort_pipe | ||
143 | # else | ||
144 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/" | upsort_pipe | ||
145 | # fi | ||
146 | # ;; | ||
147 | # esac | ||
148 | #} | ||
149 | |||
150 | #lasttarball() | ||
151 | #{ | ||
152 | # local suffix=bz2 | ||
153 | # local seperator="-" | ||
154 | # [[ ! -z $1 ]] && suffix="$1" | ||
155 | # | ||
156 | # [[ ! -z ${UP2SEPERATOR} ]] && seperator="${UP2SEPERATOR}" | ||
157 | # [[ ${UP2SEPERATOR} = NULL ]] && seperator="" | ||
158 | # | ||
159 | # case ${suffix} in | ||
160 | # tbz2|tgz|zip) | ||
161 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
162 | # then | ||
163 | # grep "\(\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed -n "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/;$ p" | ||
164 | # else | ||
165 | # grep "\(\.${suffix}\)\(\$\|\#\)" | sed -n "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/;$ p" | ||
166 | # fi | ||
167 | # ;; | ||
168 | # *) | ||
169 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
170 | # then | ||
171 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed -n "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/;$ p" | ||
172 | # else | ||
173 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | sed -n "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/;$ p" | ||
174 | # fi | ||
175 | # ;; | ||
176 | # esac | ||
177 | #} | ||
178 | |||
179 | #firsttarball() | ||
180 | #{ | ||
181 | # local suffix=bz2 | ||
182 | # local seperator="-" | ||
183 | # [[ ! -z $1 ]] && suffix="$1" | ||
184 | # | ||
185 | # [[ ! -z ${UP2SEPERATOR} ]] && seperator="${UP2SEPERATOR}" | ||
186 | # [[ ${UP2SEPERATOR} = NULL ]] && seperator="" | ||
187 | # | ||
188 | # case ${suffix} in | ||
189 | # tbz2|tgz|zip) | ||
190 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
191 | # then | ||
192 | # grep "\(\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/;q" | ||
193 | # else | ||
194 | # grep "\(\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/;q" | ||
195 | # fi | ||
196 | # ;; | ||
197 | # *) | ||
198 | # if [[ ! -z ${UP2EXCLUDE} ]] | ||
199 | # then | ||
200 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/;q" | ||
201 | # else | ||
202 | # grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/;q" | ||
203 | # fi | ||
204 | # ;; | ||
205 | # esac | ||
206 | #} | ||
207 | |||
208 | tarballversions() | ||
209 | niro | 2017 | { |
210 | local suffix=bz2 | ||
211 | niro | 2111 | local seperator="-" |
212 | niro | 2017 | [[ ! -z $1 ]] && suffix="$1" |
213 | niro | 3112 | local data |
214 | local version | ||
215 | niro | 2017 | |
216 | niro | 2111 | [[ ! -z ${UP2SEPERATOR} ]] && seperator="${UP2SEPERATOR}" |
217 | [[ ${UP2SEPERATOR} = NULL ]] && seperator="" | ||
218 | |||
219 | niro | 2017 | case ${suffix} in |
220 | niro | 3112 | tbz2|tgz|zip) |
221 | niro | 2106 | if [[ ! -z ${UP2EXCLUDE} ]] |
222 | then | ||
223 | niro | 3112 | grep "\(\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/" |
224 | niro | 2106 | else |
225 | niro | 3112 | grep "\(\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.${suffix}\).*/\1/" |
226 | niro | 2106 | fi |
227 | niro | 2017 | ;; |
228 | *) | ||
229 | niro | 2106 | if [[ ! -z ${UP2EXCLUDE} ]] |
230 | then | ||
231 | niro | 3112 | grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | grep -v -- "${UP2EXCLUDE}" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/" |
232 | niro | 2106 | else |
233 | niro | 3112 | grep "\(\.tar\.${suffix}\)\(\$\|\#\)" | sed "s/.*${seperator}\(.*\)\(\.tar\.${suffix}\).*/\1/" |
234 | niro | 2106 | fi |
235 | niro | 2017 | ;; |
236 | esac | ||
237 | } | ||
238 | |||
239 | niro | 3112 | highesttarball() |
240 | { | ||
241 | tarballversions $@ | upsort_pipe | ||
242 | } | ||
243 | |||
244 | lasttarball() | ||
245 | { | ||
246 | tarballversions $@ | sed -n "$ p" | ||
247 | } | ||
248 | |||
249 | firsttarball() | ||
250 | { | ||
251 | tarballversions $@ | sed "q" | ||
252 | } | ||
253 | |||
254 | niro | 2017 | updatecmd() |
255 | { | ||
256 | local uppver | ||
257 | local useragent | ||
258 | [[ ! -z ${UP2USERAGENT} ]] && useragent="-useragent '${UP2USERAGENT}'" | ||
259 | |||
260 | niro | 3112 | uppver=$(lynx ${LYNX_OPTIONS} -connect_timeout=${LYNX_CONNECT_TIMEOUT} -read_timeout=${LYNX_READ_TIMEOUT} -dump "${useragent}" $@ | utf8encode) |
261 | niro | 2017 | if [[ $? -ne 0 ]] |
262 | then | ||
263 | echo "Error connecting '$@'" | ||
264 | sleep 1 | ||
265 | return 1 | ||
266 | fi | ||
267 | |||
268 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
269 | then | ||
270 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
271 | else | ||
272 | echo "${uppver}" | ||
273 | fi | ||
274 | } | ||
275 | |||
276 | updatecmd_gnu() | ||
277 | { | ||
278 | local pname=$1 | ||
279 | local archive | ||
280 | local tarball | ||
281 | |||
282 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
283 | [[ ! -z $2 ]] && archive="$2" | ||
284 | |||
285 | tarball="${pname}" | ||
286 | [[ ! -z ${UP2TARBALL} ]] && tarball="${UP2TARBALL}" | ||
287 | |||
288 | # remove 'latest' tarball too | ||
289 | niro | 3112 | updatecmd "http://ftp.gnu.org/gnu/${pname}" | grep "${tarball}-" | sed '/latest/d' | highesttarball "${archive}" |
290 | niro | 2017 | } |
291 | |||
292 | updatecmd_sourceforge_old() | ||
293 | { | ||
294 | local projectname="$1" | ||
295 | local pname="$2" | ||
296 | local check_deep_release_id="$3" | ||
297 | local archive | ||
298 | local uri | ||
299 | local group_id | ||
300 | local package_link_id | ||
301 | local package_id | ||
302 | local package_name | ||
303 | local release_link_id | ||
304 | local release_id | ||
305 | |||
306 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
307 | [[ -z ${pname} ]] && pname="${projectname}" | ||
308 | case ${check_deep_release_id} in | ||
309 | deep|release_id|releaseid) check_deep_release_id="true" ;; | ||
310 | esac | ||
311 | [[ ! -z $4 ]] && archive="$4" | ||
312 | |||
313 | # project home uri | ||
314 | uri="http://sourceforge.net/projects/${projectname}" | ||
315 | group_id=$(updatecmd ${uri} | grep showfiles | sed 's/.*=\(.*\)/\1/;s/#downloads$//;q') | ||
316 | |||
317 | # showfiles.php uri with group_id to get the latest files | ||
318 | uri="http://sourceforge.net/project/showfiles.php?group_id=${group_id}" | ||
319 | |||
320 | package_link_id=$(updatecmd ${uri} | grep "\[.*\]${pname} \[.*\].*Release.*" | sed "s/.*\[\(.*\)\]${pname}.*/\1/") | ||
321 | package_id=$(updatecmd ${uri} | grep "${package_link_id}\..*showfiles.*" | sed 's/.*package_id=\(.*\)/\1/') | ||
322 | |||
323 | # debug | ||
324 | #echo group_id=${group_id} | ||
325 | #echo package_link_id=${package_link_id} | ||
326 | #echo package_id=${package_id} | ||
327 | |||
328 | uri="http://sourceforge.net/project/showfiles.php?group_id=${group_id}&package_id=${package_id}" | ||
329 | package_name=$(updatecmd "${uri}" | grep -m1 'Latest \[.*\]' | sed 's/.*]\(.*\) \[.*\].*/\1/') | ||
330 | |||
331 | if [[ ${check_deep_release_id} = true ]] | ||
332 | then | ||
333 | # showfiles.php uri with group_id and package to get the latest released files | ||
334 | uri="http://sourceforge.net/project/showfiles.php?group_id=${group_id}&package_id=${package_id}" | ||
335 | release_link_id=$(updatecmd ${uri} | grep ".*Latest.*\[.*\]${package_name} \[.*\].*" | sed "s/.*\[\(.*\)\]${package_name}.*/\1/") | ||
336 | release_id=$(updatecmd "${uri}" | grep "${release_link_id}\..*showfiles.*" | sed 's/.*release_id=\(.*\)/\1/') | ||
337 | |||
338 | # debug | ||
339 | #echo package_name=${package_name} | ||
340 | #echo release_link_id=${release_link_id} | ||
341 | #echo release_id=${release_id} | ||
342 | |||
343 | uri="http://sourceforge.net/project/showfiles.php?group_id=${group_id}&package_id=${package_id}&release_id=${release_id}" | ||
344 | case ${archive} in | ||
345 | tbz2|tgz) | ||
346 | updatecmd "${uri}" | grep "\(\.${suffix}\)" | sed -n "s/.*-\(.*\)\(\.${suffix}\).*/\1/;$ p" | ||
347 | ;; | ||
348 | *) | ||
349 | updatecmd "${uri}" | grep "\(\.tar\.${archive}\)" | sed -n "s/.*-\(.*\)\(\.tar\.${archive}\).*/\1/;$ p" | ||
350 | ;; | ||
351 | esac | ||
352 | else | ||
353 | echo "${package_name}" | ||
354 | fi | ||
355 | } | ||
356 | |||
357 | # new layout | ||
358 | updatecmd_sourceforge2() | ||
359 | { | ||
360 | local projectname="$1" | ||
361 | local pname="$2" | ||
362 | local suffix | ||
363 | local uri | ||
364 | local package_link_id | ||
365 | local package_seperator="-" | ||
366 | local excluded | ||
367 | |||
368 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
369 | [[ -z ${pname} ]] && pname="${projectname}" | ||
370 | [[ ! -z $3 ]] && package_seperator="$3" | ||
371 | |||
372 | # project home uri | ||
373 | uri="http://sourceforge.net/projects/${projectname}/files" | ||
374 | # list of file suffixes, which should be excluded | ||
375 | excluded='(.asc|.md5)' | ||
376 | # package file names has always the date and time at the end <---------| | ||
377 | #package_link_id=$(updatecmd ${uri} | egrep -v ${excluded} | grep -v .md5 | grep -m1 "${pname}${package_seperator}[0-9].* [0-9]" | sed "s/.*\[\(.*\)\]${pname}.*/\1/") | ||
378 | package_link_id=$(updatecmd ${uri} | egrep -v ${excluded} | grep -m1 "${pname}${package_seperator}[0-9].* [0-9]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
379 | echo DEBUG1:${package_link_id} | ||
380 | |||
381 | # get the suffix | ||
382 | suffix=$(updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${pname}.*\(\..*\)/\1/") | ||
383 | # echo "DEBUG2:${suffix}" | ||
384 | |||
385 | case ${suffix} in | ||
386 | .tbz2|.tgz|.zip|.rar) | ||
387 | #updatecmd ${uri} | grep -m1 "${pname}.*${suffix}" #| sed "s/.*${pname}\(.*\)${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
388 | updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${pname}\(.*\)${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
389 | ;; | ||
390 | *) | ||
391 | #updatecmd ${uri} | grep -m1 "${pname}.*.tar${suffix}" | sed "s/.*${pname}\(.*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
392 | updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${pname}\(.*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
393 | ;; | ||
394 | esac | ||
395 | } | ||
396 | |||
397 | # new layout, only newest | ||
398 | updatecmd_sourceforge_latest() | ||
399 | { | ||
400 | local projectname="$1" | ||
401 | local pname="$2" | ||
402 | local suffix | ||
403 | local uri | ||
404 | local package_link_id | ||
405 | local package_seperator="-" | ||
406 | local excluded | ||
407 | local deep="no" | ||
408 | local filename | ||
409 | local uppver | ||
410 | |||
411 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
412 | [[ -z ${pname} ]] && pname="${projectname}" | ||
413 | [[ ! -z $3 ]] && package_seperator="$3" | ||
414 | if [[ ! -z $4 ]] | ||
415 | then | ||
416 | deep="yes" | ||
417 | filename="$4" | ||
418 | fi | ||
419 | |||
420 | # project home uri | ||
421 | uri="http://sourceforge.net/projects/${projectname}/files" | ||
422 | # list of file suffixes, which should be excluded | ||
423 | excluded='(.asc|.md5)' | ||
424 | # package file names has always the date and time at the end <---------| | ||
425 | # package_link_id=$(updatecmd ${uri} | sed -n '/Newest Files/,/All Files/p' | grep -v ${excluded} | grep -m1 "${pname}${package_seperator}[0-9].* [0-9]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
426 | package_link_id=$(updatecmd ${uri} | grep -A1 'Newest Files' | sed -n "s/.*\[\(.*\)\].*${pname}${package_seperator}.*/\1/;$ p") | ||
427 | # if [[ ${deep} = yes ]] | ||
428 | # then | ||
429 | # #package_link_id=$(updatecmd ${uri} | sed -n "/${pname}.*Subscribe.*/,/.*Subscribe.*/p" | sed -n "/${filename}.*Release Notes.*/,/.*Release Notes/p" | grep -v ${excluded} | grep -m1 ".*${package_seperator}[0-9].* [0-9]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
430 | # package_link_id=$(updatecmd ${uri} | sed -n "/${pname}.*Subscribe.*/,/.*Subscribe.*/p" | sed -n "/${filename}.*Release Notes.*/,/.*Release Notes/p" | grep -v ${excluded} | grep -m1 "${pname}\ \[.*\]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
431 | # else | ||
432 | # #package_link_id=$(updatecmd ${uri} | sed -n "/${pname}.*Subscribe.*/,/.*Subscribe.*/p" | grep -v ${excluded} | grep -m1 ".*${package_seperator}[0-9].* [0-9]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
433 | # #package_link_id=$(updatecmd ${uri} | sed -n "/${pname}.*Subscribe.*/,/.*Subscribe.*/p" | grep -v ${excluded} | grep -m1 "${pname}\ \[.*\]" | sed "s/.*\[\(.*\)\].*/\1/") | ||
434 | # package_link_id=$(updatecmd ${uri} | grep -A1 'Newest Files' | sed -n "s/.*\[\(.*\)\].*${pname}${package_seperator}.*/\1/;$ p") | ||
435 | # fi | ||
436 | # #echo DEBUG1:${package_link_id} | ||
437 | |||
438 | # get the suffix | ||
439 | #suffix=$(updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${pname}.*\(\..*\)\/download/\1/") | ||
440 | suffix=$(updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*\(\..*\)\/download/\1/") | ||
441 | #echo "DEBUG2:${suffix}" | ||
442 | |||
443 | case ${suffix} in | ||
444 | .tbz2|.tgz|.zip|.rar|.7z) | ||
445 | #updatecmd ${uri} | grep -m1 "${pname}.*${suffix}" #| sed "s/.*${pname}\(.*\)${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
446 | #updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${pname}\(.*\)${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
447 | #updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\(.*\)${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
448 | uppver=$(updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\([0-9].*\)${suffix}.*/\1/;s/-/_/g;s/_//1") | ||
449 | ;; | ||
450 | *) | ||
451 | #updatecmd ${uri} | grep -m1 "${pname}.*.tar${suffix}" | sed "s/.*${pname}\(.*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
452 | #updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\(.*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1" | ||
453 | uppver=$(updatecmd -listonly ${uri} | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\([0-9].*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1") | ||
454 | ;; | ||
455 | esac | ||
456 | |||
457 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
458 | then | ||
459 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
460 | else | ||
461 | echo "${uppver}" | ||
462 | fi | ||
463 | } | ||
464 | |||
465 | |||
466 | # new layout, only newest | ||
467 | updatecmd_sourceforge_lala() | ||
468 | { | ||
469 | local projectname="$1" | ||
470 | local pname="$2" | ||
471 | local suffix | ||
472 | local uri | ||
473 | local opts | ||
474 | local package_link_id | ||
475 | local package_seperator="-" | ||
476 | local excluded | ||
477 | local deep="no" | ||
478 | local filename="${pname}" | ||
479 | local uppver | ||
480 | |||
481 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
482 | [[ -z ${pname} ]] && pname="${projectname}" | ||
483 | if [[ ! -z $3 ]] | ||
484 | then | ||
485 | case $3 in | ||
486 | null|NULL) package_seperator='' ;; | ||
487 | *) package_seperator="$3" ;; | ||
488 | esac | ||
489 | fi | ||
490 | if [[ ! -z $4 ]] | ||
491 | then | ||
492 | deep="yes" | ||
493 | filename="$4" | ||
494 | else | ||
495 | filename="${pname}" | ||
496 | fi | ||
497 | |||
498 | # special opts like sort date asc | ||
499 | if [[ ! -z ${UP2OPTS} ]] | ||
500 | then | ||
501 | opts="${UP2OPTS}" | ||
502 | else | ||
503 | opts='?sort=date&sortdir=asc' | ||
504 | fi | ||
505 | # project home uri # urlencode $pname | ||
506 | uri="http://sourceforge.net/projects/${projectname}/files/$(urlencode ${pname})${opts}" | ||
507 | # list of file suffixes, which should be excluded | ||
508 | excluded='(.asc|.md5|.exe|.txt|.sign|.rpm|.html|.7z|.dmg)' | ||
509 | package_link_id=$(updatecmd "${uri}" | grep "\[.*\]${filename}${package_seperator}" | egrep -v ${excluded} | sed -n "s/.*\[\(.*\)\].*${filename}${package_seperator}.*/\1/;$ p") | ||
510 | |||
511 | # get the suffix | ||
512 | suffix=$(updatecmd -listonly "${uri}" | grep "\ ${package_link_id}\." | sed "s/.*\(\..*\)\/download/\1/") | ||
513 | #echo "DEBUG2:${suffix}" | ||
514 | |||
515 | case ${suffix} in | ||
516 | .tbz2|.tgz|.zip|.rar|.7z) | ||
517 | uppver=$(updatecmd -listonly "${uri}" | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\([0-9].*\)${suffix}.*/\1/;s/-/_/g;s/_//1") | ||
518 | ;; | ||
519 | *) | ||
520 | uppver=$(updatecmd -listonly "${uri}" | grep "\ ${package_link_id}\." | sed "s/.*${package_seperator}\([0-9].*\).tar${suffix}.*/\1/;s/-/_/g;s/_//1") | ||
521 | ;; | ||
522 | esac | ||
523 | |||
524 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
525 | then | ||
526 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
527 | else | ||
528 | echo "${uppver}" | ||
529 | fi | ||
530 | } | ||
531 | |||
532 | # new layout, only newest | ||
533 | updatecmd_sourceforge_ftp_dir() | ||
534 | { | ||
535 | local projectname="$1" | ||
536 | local pname="$2" | ||
537 | local modifier="$3" | ||
538 | local uppver | ||
539 | |||
540 | # mesh works, kent not | ||
541 | #local mirror="http://mesh.dl.sourceforge.net" | ||
542 | local mirror="http://garr.dl.sourceforge.net" | ||
543 | |||
544 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
545 | [[ -z ${pname} ]] && pname="${projectname}" | ||
546 | case ${modifier} in | ||
547 | date-asc) modifier='?C=M;O=A' ;; | ||
548 | date-desc) modifier='?C=M;O=D' ;; | ||
549 | name) modifier='' ;; | ||
550 | *) modifier='' ;; | ||
551 | esac | ||
552 | |||
553 | # urlencode everything | ||
554 | projectname=$(urlencode ${projectname}) | ||
555 | pname=$(urlencode ${pname}) | ||
556 | |||
557 | if [[ ! -z ${UP2EXCLUDE} ]] | ||
558 | then | ||
559 | uppver=$(updatecmd "${mirror}/project/${projectname}/${pname}/${modifier}" | grep -v -- "${UP2EXCLUDE}" | grep '[DIR].*\[[0-9].*\/' | sed -n 's/.*[0-9]\]\(.*\)\/.*/\1/;$ p') | ||
560 | else | ||
561 | uppver=$(updatecmd "${mirror}/project/${projectname}/${pname}/${modifier}" | grep '[DIR].*\[[0-9].*\/' | sed -n 's/.*[0-9]\]\(.*\)\/.*/\1/;$ p') | ||
562 | fi | ||
563 | |||
564 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
565 | then | ||
566 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
567 | else | ||
568 | echo "${uppver}" | ||
569 | fi | ||
570 | } | ||
571 | |||
572 | # needs app-text/xmlstarlet | ||
573 | updatecmd_sourceforge() | ||
574 | { | ||
575 | local projectname="$1" | ||
576 | local subprojectname="$2" | ||
577 | local archive="$3" | ||
578 | local uri | ||
579 | local project_id | ||
580 | local tarballname | ||
581 | local seperator | ||
582 | niro | 3112 | local rss_limit=50 |
583 | niro | 2017 | local tarballprefix |
584 | local uppver | ||
585 | local allver | ||
586 | |||
587 | if [[ -z ${archive} ]] && [[ -n ${subprojectname} ]] | ||
588 | then | ||
589 | case ${subprojectname} in | ||
590 | xz|gz|bz2|tbz|tbz2|txz|tgz|zip|rar|7z|jar) | ||
591 | archive="${subprojectname}" | ||
592 | unset subprojectname | ||
593 | ;; | ||
594 | esac | ||
595 | fi | ||
596 | |||
597 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
598 | [[ -z ${subprojectname} ]] && subprojectname="${projectname}" | ||
599 | if [[ -z ${tarballname} ]] | ||
600 | then | ||
601 | if [[ ${subprojectname} != ${projectname} ]] | ||
602 | then | ||
603 | tarballname="${subprojectname}" | ||
604 | else | ||
605 | tarballname="${projectname}" | ||
606 | fi | ||
607 | fi | ||
608 | [[ -z ${seperator} ]] && seperator="-" | ||
609 | [[ -z ${archive} ]] && archive="bz2" | ||
610 | |||
611 | # overrides | ||
612 | [[ ! -z ${UP2TARBALL} ]] && tarballname="${UP2TARBALL}" | ||
613 | [[ ! -z ${UP2SEPERATOR} ]] && seperator="${UP2SEPERATOR}" | ||
614 | [[ ${UP2SEPERATOR} = NULL ]] && seperator="" | ||
615 | |||
616 | uri="http://sourceforge.net/projects/${projectname}" | ||
617 | niro | 3112 | # project_id=$(updatecmd ${uri} | grep project-id | sed -e 's:.*project-id/::;s:/.*::') |
618 | # rss_uri="http://sourceforge.net/api/file/index/project-id/${project_id}/mtime/desc/limit/${rss_limit}/rss" | ||
619 | rss_uri="${uri}/rss?path=/" | ||
620 | niro | 2017 | |
621 | case ${archive} in | ||
622 | bz2|gz|xz) tarballprefix=".tar.${archive}" ;; | ||
623 | niro | 3112 | archive-bz2|archive-gz|archive-xz) tarballprefix=".${archive/archive-/}" ;; |
624 | niro | 2017 | tbz|tbz2|txz|tgz|zip|rar|7z|jar) tarballprefix=".${archive}" ;; |
625 | niro | 3112 | *) tarballprefix=".${archive}" ;; |
626 | niro | 2017 | esac |
627 | |||
628 | if [[ -x $(type -P xml) ]] | ||
629 | then | ||
630 | allver=$(updatecmd ${rss_uri} | xml sel -T -t -m //item -v title -n) | ||
631 | else | ||
632 | allver=$(updatecmd ${rss_uri}) | ||
633 | fi | ||
634 | |||
635 | if [[ ! -z ${UP2EXCLUDE} ]] | ||
636 | then | ||
637 | allver=$(echo "${allver}" | grep -v -- "${UP2EXCLUDE}") | ||
638 | fi | ||
639 | |||
640 | allver=$(echo "${allver}" | grep "/${subprojectname}.*/${tarballname}${seperator}.*${tarballprefix}" | sed -e "s:.*${tarballname}${seperator}::;s:${tarballprefix}.*::") | ||
641 | #uppver=$(echo "${allver}" | sort -g | tac | head -n 1) | ||
642 | niro | 3112 | #uppver=$(echo "${allver}" | sort -n | tac | head -n 1) |
643 | uppver=$(upsort "${allver}") | ||
644 | niro | 2017 | |
645 | if [[ ! -z ${UP2SUBSTITUTE} ]] | ||
646 | then | ||
647 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
648 | else | ||
649 | echo "${uppver}" | ||
650 | fi | ||
651 | } | ||
652 | |||
653 | updatecmd_berlios() | ||
654 | { | ||
655 | local projectname="$1" | ||
656 | local pname="$2" | ||
657 | local uri | ||
658 | local group_id | ||
659 | |||
660 | [[ -z ${projectname} ]] && die "give me a \$PROJECTNAME" | ||
661 | [[ -z ${pname} ]] && pname="${projectname}" | ||
662 | |||
663 | uri="http://developer.berlios.de/projects/${projectname}" | ||
664 | group_id=$(updatecmd "${uri}" | grep showfiles | sed 's/.*group_id=\(.*\)&.*/\1/;q') | ||
665 | |||
666 | # debug | ||
667 | # echo group_id=${group_id} | ||
668 | # echo package_link_id=${package_link_id} | ||
669 | # echo package_id=${package_id} | ||
670 | |||
671 | uri="http://developer.berlios.de/project/showfiles.php?group_id=${group_id}" | ||
672 | updatecmd "${uri}" | grep -A3 "^${pname}$" | sed -n 's/.*\[.*]\(.*\) .*[0-9]-.*/\1/;$ p' | ||
673 | } | ||
674 | |||
675 | updatecmd_freedesktop() | ||
676 | { | ||
677 | local pname=$1 | ||
678 | local archive | ||
679 | local subdir | ||
680 | local tarballname | ||
681 | |||
682 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
683 | [[ ! -z $2 ]] && archive="$2" | ||
684 | [[ ! -z ${UP2SUBDIR} ]] && subdir="/${UP2SUBDIR}" | ||
685 | tarballname="${pname}" | ||
686 | [[ ! -z ${UP2TARBALL} ]] && tarballname="${UP2TARBALL}" | ||
687 | |||
688 | # exclude rc versions! | ||
689 | niro | 3112 | updatecmd "http://${pname}.freedesktop.org/releases${subdir}" | grep ${tarballname}- | grep -v rc[0-9] | highesttarball "${archive}" |
690 | niro | 2017 | } |
691 | |||
692 | updatecmd_xorg() | ||
693 | { | ||
694 | local pname=$1 | ||
695 | local subdir | ||
696 | local tarballname | ||
697 | local pcat | ||
698 | |||
699 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
700 | [[ ! -z $2 ]] && archive="$2" | ||
701 | tarballname="${pname}-" | ||
702 | if [[ ! -z ${PCAT} ]] | ||
703 | then | ||
704 | pcat="${PCAT}" | ||
705 | else | ||
706 | pcat="${PCATEGORIE}" | ||
707 | fi | ||
708 | subdir="$(echo ${pcat} | sed -e 's:x11-::' -e 's:media-::' -e 's/\(.*\)s$/\1/')" | ||
709 | [[ ! -z ${UP2SUBDIR} ]] && subdir="${UP2SUBDIR}" | ||
710 | [[ ! -z ${UP2TARBALL} ]] && tarballname="${UP2TARBALL}" | ||
711 | |||
712 | niro | 3112 | updatecmd "http://xorg.freedesktop.org/archive/individual/${subdir}/?C=M;O=A" | grep "/${tarballname}" | highesttarball "${archive}" |
713 | niro | 2017 | } |
714 | |||
715 | updatecmd_perl() | ||
716 | { | ||
717 | local pname=$1 | ||
718 | local archive | ||
719 | local uppver | ||
720 | |||
721 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
722 | [[ ! -z $2 ]] && archive="$2" | ||
723 | |||
724 | uppver=$(updatecmd "http://search.cpan.org/dist/${pname}/" | lasttarball "${archive}") | ||
725 | |||
726 | niro | 3112 | if [[ ! -z ${UP2SUBSTITUTE} ]] |
727 | then | ||
728 | echo "${uppver}" | sed "s:${UP2SUBSTITUTE}::g" | ||
729 | else | ||
730 | echo "${uppver}" | ||
731 | fi | ||
732 | niro | 2017 | } |
733 | |||
734 | niro | 3112 | updatecmd_pypi() |
735 | { | ||
736 | local pname="$1" | ||
737 | local archive="$2" | ||
738 | local uppver | ||
739 | # local fullarchive | ||
740 | # local tarball= | ||
741 | # local seperator | ||
742 | |||
743 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
744 | [[ -z ${archive} ]] && die "give me a \$ARCHIVE" | ||
745 | |||
746 | # case ${archive} in | ||
747 | # gz|bz2) fullarchive=".tar.${archive}" ;; | ||
748 | # *) fullarchive=".${archive}" ;; | ||
749 | # esac | ||
750 | |||
751 | # tarball="${pname}" | ||
752 | # seperator="-" | ||
753 | # [[ -z ${UP2TARBALL} ]] || tarball="${UP2TARBALL}" | ||
754 | # [[ -z ${UP2SEPERATOR} ]] || seperator="${UP2SEPERATOR}" | ||
755 | |||
756 | # we cannot sort with C=M;O=A | ||
757 | # uppver=$(updatecmd -listonly https://pypi.python.org/packages/source/${pname:0:1}/${pname}/ | grep ${tarball} | grep ${fullarchive} | sed "s:.*${tarball}${seperator}\(.*\)${fullarchive}:\1:") | ||
758 | uppver=$(updatecmd https://pypi.python.org/pypi/${pname}/ | grep "/source/${pname:0:1}/${pname}/" | highesttarball ${archive}) | ||
759 | #uppver=$(updatecmd -listonly https://pypi.python.org/pypi/${pname}/ | grep ${tarball} | grep ${fullarchive} | sed "s:.*${tarball}${seperator}\(.*\)${fullarchive}:\1:") | ||
760 | |||
761 | upsort ${uppver} | ||
762 | } | ||
763 | |||
764 | niro | 2017 | updatecmd_gnome() |
765 | { | ||
766 | local uri | ||
767 | local pname="$1" | ||
768 | niro | 3112 | local mode="$2" |
769 | local appmajor | ||
770 | niro | 2017 | |
771 | niro | 3112 | |
772 | niro | 2017 | [[ -z ${pname} ]] && die "give me a \$PNAME" |
773 | |||
774 | niro | 3112 | case ${mode} in |
775 | devel|--devel) mode="devel" ;; | ||
776 | *) mode="normal" ;; | ||
777 | esac | ||
778 | |||
779 | uri="http://ftp.gnome.org/pub/GNOME/sources/${pname}" | ||
780 | if [[ ${mode} = devel ]] | ||
781 | then | ||
782 | appmajor=$(updatecmd "${uri}"/?C=N\;O=D | grep '/' | sed -ne 's|.*]\(.*\)/.*|\1|' -e '1 p') | ||
783 | else | ||
784 | appmajor=$(updatecmd "${uri}"/?C=N\;O=D | grep '[0-9]\.[0-9]*[02468]/' | sed -ne 's|.*]\(.*\)/.*|\1|' -e '1 p') | ||
785 | fi | ||
786 | |||
787 | updatecmd ${uri}/${appmajor}/ | grep ]LA | sed 's/.*S-\([0-9\.]*\).*/\1/' | upsort_pipe | ||
788 | niro | 2017 | } |
789 | |||
790 | updatecmd_xfce() | ||
791 | { | ||
792 | local uri | ||
793 | local pname="$1" | ||
794 | local archive | ||
795 | local subdir | ||
796 | |||
797 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
798 | [[ ! -z $2 ]] && archive="$2" | ||
799 | if [[ -n ${UP2SUBDIR} ]] | ||
800 | then | ||
801 | subdir="${UP2SUBDIR}" | ||
802 | else | ||
803 | subdir="xfce" | ||
804 | fi | ||
805 | |||
806 | uri="http://archive.xfce.org/src/${subdir}/${pname}" | ||
807 | niro | 3112 | if [[ ${UP2OPTS} = unstable ]] |
808 | then | ||
809 | #updatecmd ${uri}/$(updatecmd "${uri}"/?C=N\;O=D | grep '[0-9]\.[0-9]/' | sed -ne 's|.*]\(.*\)/.*|\1|' -e '1 p')/?C=M\;O=A | lasttarball "${archive}" | ||
810 | updatecmd ${uri}/$(updatecmd -nolist "${uri}" | grep '[0-9]\.[0-9]*[0-9]/' | sed -e 's|.*]\(.*\)/.*|\1|' | upsort_pipe)/ | highesttarball "${archive}" | ||
811 | else | ||
812 | #updatecmd ${uri}/$(updatecmd "${uri}"/?C=N\;O=D | grep '[0-9]\.[0-9]*[02468]/' | sed -ne 's|.*]\(.*\)/.*|\1|' -e '1 p')/?C=M\;O=A | lasttarball "${archive}" | ||
813 | updatecmd ${uri}/$(updatecmd -nolist "${uri}" | grep '[0-9]\.[0-9]*[02468]/' | sed -e 's|.*]\(.*\)/.*|\1|' | upsort_pipe)/ | highesttarball "${archive}" | ||
814 | fi | ||
815 | niro | 2017 | } |
816 | |||
817 | updatecmd_google() | ||
818 | { | ||
819 | local uri | ||
820 | local pname="$1" | ||
821 | local archive | ||
822 | |||
823 | [[ -z ${pname} ]] && die "give me a \$PNAME" | ||
824 | [[ ! -z $2 ]] && archive="$2" | ||
825 | |||
826 | uri="http://code.google.com/p/${pname}/downloads/list" | ||
827 | updatecmd --listonly "${uri}" | grep ${pname}- | firsttarball "${archive}" | ||
828 | } | ||
829 | |||
830 | updateme() | ||
831 | { | ||
832 | local smage="$1" | ||
833 | local ONLY_PRINT_UPSTREAM | ||
834 | |||
835 | if [[ $1 = --upstream ]] || [[ $1 = -u ]] | ||
836 | then | ||
837 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
838 | then | ||
839 | echo "you must give me a smagefile." | ||
840 | exit 1 | ||
841 | fi | ||
842 | ONLY_PRINT_UPSTREAM=1 | ||
843 | smage="$2" | ||
844 | fi | ||
845 | |||
846 | local PNAME | ||
847 | local PCATEGORIE | ||
848 | local PCAT | ||
849 | local PVER | ||
850 | local UP2DATE | ||
851 | niro | 3112 | local UP2URI |
852 | niro | 2017 | local UP2PVER |
853 | local UP2TARBALL | ||
854 | local UP2SUBDIR | ||
855 | local UP2SUBSTITUTE | ||
856 | local UP2USERAGENT | ||
857 | local UP2EXCLUDE | ||
858 | local UP2SEPERATOR | ||
859 | local UP2OPTS | ||
860 | local UPSTREAM_PVER | ||
861 | niro | 3112 | # |
862 | # PNAME="$(get_value_from_magefile PNAME ${smage})" | ||
863 | # PCATEGORIE="$(get_value_from_magefile PCATEGORIE ${smage})" | ||
864 | # PCAT="$(get_value_from_magefile PCAT ${smage})" | ||
865 | # PVER="$(get_value_from_magefile PVER ${smage})" | ||
866 | # UP2PVER="$(get_value_from_magefile UP2PVER ${smage})" | ||
867 | # UP2TARBALL="$(get_value_from_magefile UP2TARBALL ${smage})" | ||
868 | # UP2SUBDIR="$(get_value_from_magefile UP2SUBDIR ${smage})" | ||
869 | # UP2SUBSTITUTE="$(get_value_from_magefile UP2SUBSTITUTE ${smage})" | ||
870 | # UP2USERAGENT="$(get_value_from_magefile UP2USERAGENT ${smage})" | ||
871 | # UP2EXCLUDE="$(get_value_from_magefile UP2EXCLUDE ${smage})" | ||
872 | # UP2SEPERATOR="$(get_value_from_magefile UP2SEPERATOR ${smage})" | ||
873 | # UP2OPTS="$(get_value_from_magefile UP2OPTS ${smage})" | ||
874 | smagesource "${smage}" | ||
875 | niro | 2017 | |
876 | [[ -z ${UP2PVER} ]] && UP2PVER="${PVER}" | ||
877 | |||
878 | UP2DATE=$(get_value_from_magefile UP2DATE ${smage}) | ||
879 | |||
880 | if [[ -z ${UP2DATE} ]] | ||
881 | then | ||
882 | #echo "\$UP2DATE is empty, skipping ..." | ||
883 | niro | 3112 | #continue |
884 | : | ||
885 | niro | 2017 | fi |
886 | |||
887 | #echo "UP2DATE=${UP2DATE}" | ||
888 | #read | ||
889 | UPSTREAM_PVER=$(eval "${UP2DATE}") | ||
890 | if [[ ${ONLY_PRINT_UPSTREAM} = 1 ]] | ||
891 | then | ||
892 | echo "${UPSTREAM_PVER}" | ||
893 | else | ||
894 | # [[ ${UP2PVER} = ${UPSTREAM_PVER} ]] && echo -e "${PNAME}: ${COLGREEN}'${UP2PVER}' = '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
895 | # #[[ ${UP2PVER} != ${UPSTREAM_PVER} ]] && echo "${PNAME}: '${UP2PVER}' != '${UPSTREAM_PVER}'" | ||
896 | # [[ ${UP2PVER} < ${UPSTREAM_PVER} ]] && echo -e "${PNAME}: ${COLRED}'${UP2PVER}' < '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
897 | # [[ ${UP2PVER} > ${UPSTREAM_PVER} ]] && echo -e "${PNAME}: ${COLYELLOW}'${UP2PVER}' > '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
898 | local retval | ||
899 | retval=$(/home/tjoke/archlinux_version/vercomp "${UP2PVER}" "${UPSTREAM_PVER}") | ||
900 | [ ${retval} -eq 0 ] && echo -e "${PNAME}: ${COLGREEN}'${UP2PVER}' = '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
901 | [ ${retval} -lt 0 ] && echo -e "${PNAME}: ${COLRED}'${UP2PVER}' < '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
902 | [ ${retval} -gt 0 ] && echo -e "${PNAME}: ${COLYELLOW}'${UP2PVER}' > '${UPSTREAM_PVER}'${COLDEFAULT}" | ||
903 | fi | ||
904 | } | ||
905 | |||
906 | updateall() | ||
907 | { | ||
908 | #local REPOS | ||
909 | local PACKAGE | ||
910 | local smage | ||
911 | local repo | ||
912 | niro | 3112 | local UP2DATE_SLEEP_COUNT=0 |
913 | local UP2DATE_SLEEP_TIMEOUT=0 | ||
914 | niro | 2017 | local ONLY_PRINT_UPSTREAM=0 |
915 | |||
916 | : ${REPOS="/home/tjoke/svn/smage/trunk/core /home/tjoke/svn/smage/trunk/extras /home/tjoke/svn/smage/trunk/nonfree /home/tjoke/svn/smage/trunk/todo"} | ||
917 | # REPOS="/home/tjoke/svn/smage/trunk/core /home/tjoke/svn/smage/trunk/extras" | ||
918 | # REPOS="/home/tjoke/svn/smage/trunk/core" | ||
919 | # PACKAGE="glibc-nptl" | ||
920 | # PACKAGE="autoconf21" | ||
921 | PACKAGE="*" | ||
922 | [[ ! -z $1 ]] && PACKAGE="$1" | ||
923 | |||
924 | if [[ $1 = --upstream ]] || [[ $1 = -u ]] | ||
925 | then | ||
926 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
927 | then | ||
928 | echo "you must give me a smagefile." | ||
929 | exit 1 | ||
930 | fi | ||
931 | updateme $1 $2 | ||
932 | return 0 | ||
933 | fi | ||
934 | |||
935 | ############################################################################## | ||
936 | # recurse all depends if requested | ||
937 | # | ||
938 | if [[ $1 = --depend ]] || [[ $1 = -d ]] | ||
939 | then | ||
940 | if [[ -z $2 ]] || [[ ${2##*.} != smage2 ]] | ||
941 | then | ||
942 | echo "you must give me a smagefile." | ||
943 | exit 1 | ||
944 | fi | ||
945 | |||
946 | SMAGEFILE="$2" | ||
947 | PACKAGE="$(magename2pname ${SMAGEFILE})" | ||
948 | |||
949 | echo "processing '${SMAGEFILE}' ..." | ||
950 | echo "running dependency checks for package '${PACKAGE}'..." | ||
951 | |||
952 | DEPEND=$(get_value_from_magefile DEPEND ${SMAGEFILE}) | ||
953 | SDEPEND=$(get_value_from_magefile SDEPEND ${SMAGEFILE}) | ||
954 | |||
955 | declare -i c=0 | ||
956 | while read sign dep | ||
957 | do | ||
958 | case ${dep} in | ||
959 | "") continue;; | ||
960 | esac | ||
961 | |||
962 | # sleep every 15 packages for 5 seconds | ||
963 | (( c++ )) | ||
964 | if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]] | ||
965 | then | ||
966 | declare -i c=0 | ||
967 | echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..." | ||
968 | sleep ${UP2DATE_SLEEP_TIMEOUT} | ||
969 | fi | ||
970 | #echo "debug: ${dep}" | ||
971 | updateme "$(dep2pname ${dep})" | ||
972 | done << EOF | ||
973 | ${DEPEND} | ||
974 | ${SDEPEND} | ||
975 | EOF | ||
976 | fi | ||
977 | # | ||
978 | # eof recurse | ||
979 | ############################################################################## | ||
980 | |||
981 | for repo in ${REPOS} | ||
982 | do | ||
983 | # exclude not existing | ||
984 | [[ ${PACKAGE} != \* ]] && [[ ! -d ${repo}/${PACKAGE} ]] && continue | ||
985 | |||
986 | declare -i c=0 | ||
987 | for smage in ${repo}/${PACKAGE}/*.smage2 | ||
988 | do | ||
989 | updateme ${smage} | ||
990 | |||
991 | # sleep every 15 packages for 5 seconds | ||
992 | (( c++ )) | ||
993 | if [[ ${c} -eq ${UP2DATE_SLEEP_COUNT} ]] | ||
994 | then | ||
995 | declare -i c=0 | ||
996 | echo "DEBUG: Sleep Count (${UP2DATE_SLEEP_COUNT}x) reached, sleeping for ${UP2DATE_SLEEP_TIMEOUT} seconds ..." | ||
997 | sleep ${UP2DATE_SLEEP_TIMEOUT} | ||
998 | fi | ||
999 | done | ||
1000 | done | ||
1001 | } | ||
1002 | |||
1003 | updateall $@ |
Properties
Name | Value |
---|---|
svn:executable | * |