Как скачать конкретный ассет из последнего релиза на GitHub по регулярке?

Привет. Иногда надо программно получить ссылку на свежайший релизный ассет с гитхаба. Метода 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, да и не только.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *