Привет. Иногда надо программно получить ссылку на свежайший релизный ассет с гитхаба. Метода API для получения последнего тега нет.
Часто хватает привычного
https://github.com/owner/repo/releases/download/latest/filename.ext
Но ведь версия может указываться в названии ассета:
https://github.com/owner/repo/releases/download/latest/filename_1.2.3.ext
Так-то можно было бы подставить её в урлу и вперёд. Но для этого надо заранее отдельно идти и узнавать версию руками.
А можно проще:
curl -s "https://api.github.com/repos/owner/repo/releases/latest" \
| jq -r '.assets.[] | select(.name | test("РЕГУЛЯРКА")).browser_download_url'
Этот метод API вернёт последний по дате создания стабильный (не черновик, и не пре-) релиз и список его ассетов. Меткой регуляркой фильтруем ассеты по названию (читай, имени файла) и получаем прямую ссылку на нужный. Красота.
Конкретный пример — anyproto/anytype-ts. Они формируют релизы с названиями версий в ассетах, так что программно лобовой урлой ассет не качнуть. Аналогично в rustdesk/rustdesk, да и не только.
Добавить комментарий