1declare -A binaries 2binaries[rg]="BurntSushi/ripgrep" 3binaries[fd]="sharkdp/fd" 4 5for binary in "${!binaries[@]}" 6do 7 curvers= 8 if command -V $binary > /dev/null 2>&1; then 9 curvers="$($binary -V | cut -d' ' -f2 | sed 's/^v//')"10 fi11 latesturl="https://api.github.com/repos/${binaries[$binary]}/releases/latest"12 latestvers="$(curl -s "$latesturl" | jq -r .tag_name | sed 's/^v//')"13 if [ "$curvers" = "$latestvers" ]; then14 echo "${binary} ${curvers} is up to date"15 continue16 fi1718 url=$(curl -s https://api.github.com/repos/${binaries[$binary]}/releases/latest | jq -r '.["assets"] | map(.["browser_download_url"]) | map(select(. | match("amd64.deb")))[0]')19 name=${url##*/}20 (cd /tmp && curl -LO "$url" && sudo dpkg -i "$name")21 echo "${binary} updated from $curvers to $latestvers"22done