at master 1.5 kB view raw
1#!/usr/bin/env bash 2 3# lists all available versions listed for a package in a site (http) 4 5pname="" # package name 6attr_path="" # package attribute path 7url="" # directory listing url 8file="" # file for writing debugging information 9 10while (( $# > 0 )); do 11 flag="$1" 12 shift 1 13 case "$flag" in 14 --pname=*) 15 pname="${flag#*=}" 16 ;; 17 --attr-path=*) 18 attr_path="${flag#*=}" 19 ;; 20 --url=*) 21 url="${flag#*=}" 22 ;; 23 --file=*) 24 file="${flag#*=}" 25 ;; 26 *) 27 echo "$0: unknown option ‘${flag}’" 28 exit 1 29 ;; 30 esac 31done 32 33if [[ -z "$pname" ]]; then 34 pname="$UPDATE_NIX_PNAME" 35fi 36 37if [[ -z "$attr_path" ]]; then 38 attr_path="$UPDATE_NIX_ATTR_PATH" 39fi 40 41# by default set url to the base dir of the first url in src.urls 42if [[ -z "$url" ]]; then 43 url="$(nix-instantiate $systemArg --eval -E \ 44 "with import ./. {}; dirOf (dirOf (lib.head $attr_path.src.urls))" \ 45 | tr -d '"')" 46fi 47 48# print a debugging message 49if [[ -n "$file" ]]; then 50 echo "# Listing versions for '$pname' at $url" >> $file 51fi 52 53# list all major-minor versions from url 54tags1=$(curl -sS "$url/") 55tags1=$(echo "$tags1" | sed -rne 's,^<a href="([0-9]+\.[0-9]+)/">.*,\1,p') 56 57# print available versions 58for tag in $tags1; do 59 tags2=$(curl -sS "$url/$tag/") 60 tags2=$(echo "$tags2" | sed -rne "s,^<a href=\"$pname-([0-9.]+)\\.[^0-9].*\">.*,\\1,p") 61 echo "$tags2" 62done