Найти в Дзене
Эникей на передержке

Как скачать с GitHub последнюю версию любого приложения в bash

Идея состоит в том, чтобы запросить с помощью curl ссылки на актуальный релиз и найти в полученном ответе ссылку на пакет для подходящей платформы. У GitHub есть API, доступный по адресу api.github.com. Если взять ссылку на страницу последнего релиза любого приложения и правильно выполнить подмену, то мы получим ответ в формате json. Останется лишь отфильтровать его. Получаем ссылку на страницу последнего релиза, например: https://github.com/arsenetar/dupeguru/releases/latest Подменяем на https://api.github.com/repos/arsenetar/dupeguru/releases/latest, т.е. sudo apt update && sudo apt upgrade
sudo apt install curl -y link="https://github.com/arsenetar/dupeguru/releases/latest" link=$(echo ${link#https://github.com} | echo "https://api.github.com/repos$(cat /dev/stdin)") curl -L $(curl -s $link | grep -m 1 -oP "(https[^\s\"]*amd64[^\s]*\.deb)") -o /tmp/myapp.deb sudo dpkg -i /tmp/myapp.deb
Оглавление

Теория

Идея состоит в том, чтобы запросить с помощью curl ссылки на актуальный релиз и найти в полученном ответе ссылку на пакет для подходящей платформы.

У GitHub есть API, доступный по адресу api.github.com. Если взять ссылку на страницу последнего релиза любого приложения и правильно выполнить подмену, то мы получим ответ в формате json. Останется лишь отфильтровать его.

Практика

Получаем ссылку на страницу последнего релиза, например: https://github.com/arsenetar/dupeguru/releases/latest

Подменяем на https://api.github.com/repos/arsenetar/dupeguru/releases/latest, т.е.

Устанавливаем curl

sudo apt update && sudo apt upgrade
sudo apt install curl -y

Редактируем ссылку для доступа к API

link="https://github.com/arsenetar/dupeguru/releases/latest"
link=$(echo ${link#https://github.com} | echo "https://api.github.com/repos$(cat /dev/stdin)")

Скачиваем пакет

curl -L $(curl -s $link | grep -m 1 -oP "(https[^\s\"]*amd64[^\s]*\.deb)") -o /tmp/myapp.deb

Устанавливаем/обновляем

sudo dpkg -i /tmp/myapp.deb