Pastery

mushya +

 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
New paste