40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
[ -n "$1" ] \
|
|
|| { echo "usage: $(basename $0) <package> [timeout]" && exit 0; }
|
|
|
|
[ "$1" != "-c" ] || { shift; cached="yes"; }
|
|
[ "$1" != "-r" ] || { shift; reparse="yes"; }
|
|
|
|
name="$1"
|
|
timeout=${2:-5}
|
|
|
|
cleanup() { [ -f "$temp" ] && rm "$temp"; }
|
|
trap cleanup EXIT
|
|
|
|
temp="$(mktemp)"
|
|
|
|
# main
|
|
#url="https://git.alpinelinux.org/aports/tree/$name?h=master"
|
|
#pre="tree listing"
|
|
#pst="<\/table"
|
|
#rex="href='.+\/([^\/]+.patch)'"
|
|
#plain="https://git.alpinelinux.org/aports/plain"
|
|
|
|
# github mirror
|
|
url="https://github.com/alpinelinux/aports/tree/master/$name"
|
|
pre="repository-content"
|
|
pst="footer container"
|
|
rex='title="([^\/]+.patch)"'
|
|
plain="https://raw.githubusercontent.com/alpinelinux/aports/master"
|
|
|
|
# extract the text between the pre and post regexes on the target webpage.
|
|
{ curl --compressed -m $timeout -L -s $url \
|
|
|| { echo "url failed" >&2 && continue; }; } \
|
|
| awk "sub(/^.*$pre/,\"\"){echo=1} /$pst/{echo=0} echo" \
|
|
> $temp
|
|
|
|
perl -n -e "/$rex/ && print \"\$1\\n\"" $temp | while read path; do
|
|
curl -LO "$plain/$name/$path"
|
|
done
|