Skip to content

Commit 5f7ed94

Browse files
committed
common/xbps-src/shutils/update_check: use info/refs for checking common git forges
this endpoint is intended for git usage and while it is "binary", it is text and has all the tags, which is what we care about these pages are also much smaller than the web or even an atom feed, so this should be more efficient
1 parent 7ec389b commit 5f7ed94

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

common/xbps-src/shutils/update_check.sh

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,19 +151,19 @@ update_check() {
151151
url="https://pypi.org/simple/$pkgname";;
152152
*github.com*)
153153
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
154-
url="https://github.com/$pkgurlname/tags"
155-
rx='/archive/refs/tags/(\Q'"$pkgname"'\E|[-_v])*\K[\d.]+(?=\.tar\.gz")';;
154+
url="https://github.com/$pkgurlname/info/refs?service=git-upload-pack"
155+
rx='refs/tags/(\Q'"$pkgname"'\E|[-_v])?\K[\d.]+($|(?=^))';;
156156
*//gitlab.*|*code.videolan.org*)
157157
case "$url" in
158158
*/-/*) pkgurlname="$(printf %s "$url" | sed -e 's%/-/.*%%g; s%/$%%')";;
159159
*) pkgurlname="$(printf %s "$url" | cut -d / -f 1-5)";;
160160
esac
161-
url="$pkgurlname/-/tags"
162-
rx='/archive/[^/]+/\Q'"$pkgname"'\E-v?\K[\d.]+(?=\.tar\.gz)';;
161+
url="$pkgurlname.git/info/refs?service=git-upload-pack"
162+
rx='refs/tags/(\Q'"$pkgname"'\E|[-_v])?\K[\d.]+($|(?=^))';;
163163
*bitbucket.org*)
164164
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
165-
url="https://bitbucket.org/$pkgurlname/downloads"
166-
rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';;
165+
url="https://bitbucket.org/$pkgurlname/info/refs?service=git-upload-pack"
166+
rx='refs/tags/(\Q'"$pkgname"'\E|[-_v])?\K[\d.]+($|(?=^))';;
167167
*ftp.gnome.org*|*download.gnome.org*)
168168
rx='(?<=LATEST-IS-)([0-24-9]|3\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=\")'
169169
url="https://download.gnome.org/sources/$pkgname/cache.json";;
@@ -184,16 +184,16 @@ update_check() {
184184
rx='/crates/'${pkgname#rust-}'/\K[0-9.]*(?=/download)' ;;
185185
*codeberg.org*)
186186
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
187-
url="https://codeberg.org/$pkgurlname/tags"
188-
rx='/archive/(v-?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz)' ;;
187+
url="https://codeberg.org/$pkgurlname/info/refs"
188+
rx='refs/tags/(\Q'"$pkgname"'\E|[-_v])?\K[\d.]+($|(?=^))';;
189189
*hg.sr.ht*)
190190
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
191191
url="https://hg.sr.ht/$pkgurlname/tags"
192192
rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';;
193193
*git.sr.ht*)
194194
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
195-
url="https://git.sr.ht/$pkgurlname/refs/rss.xml"
196-
rx='<guid>\Q'"${url%/*}"'\E/(v-?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=</guid>)' ;;
195+
url="https://git.sr.ht/$pkgurlname/info/refs"
196+
rx='refs/tags/(\Q'"$pkgname"'\E|[-_v])?\K[\d.]+($|(?=^))';;
197197
*pkgs.fedoraproject.org*)
198198
url="https://pkgs.fedoraproject.org/repo/pkgs/$pkgname" ;;
199199
*software.sil.org/downloads/*)
@@ -223,7 +223,7 @@ update_check() {
223223

224224
msg_verbose "fetching $url and scanning with $rx\n"
225225
curl "${curlargs[@]}" -H 'Accept: text/html,application/xhtml+xml,application/xml,text/plain,application/rss+xml,application/json' "$url" |
226-
grep -Po -i "$rx"
226+
grep -Pao -i "$rx"
227227
fetchedurls[$url]=yes
228228
done |
229229
tr _ . |

0 commit comments

Comments
 (0)