pthbs

Packaging Through Hashed Build Scripts
git clone https://ccx.te2000.cz/git/pthbs
Log | Files | Refs | Submodules | README

pthbs-download (1257B)


      1 #!/bin/sh
      2 if test -n "$pthbs_xtrace"; then
      3 	set -x
      4 	if test -n "$BB_ASH_VERSION"; then PS4="+${0##*/}"':${FUNCNAME}:${LINENO} '; fi
      5 fi
      6 test $# -gt 3 || exit 2
      7 checksum_format=$1
      8 checksum=$2
      9 size=$3
     10 shift 3 || exit
     11 if test -z "$pthbs_cache"; then
     12     printf '%s\n' >&2 "$0: fatal: pthbs_cache env var undefined or empty"
     13     exit 100
     14 fi
     15 filename=$pthbs_cache/downloads/$checksum_format/$checksum
     16 
     17 case $checksum_format in
     18 	(md5);;
     19 	(sha1);;
     20 	(sha256);;
     21 	(sha3);;
     22 	(sha512);;
     23 	(*)
     24 		printf>&2 "FATAL: unrecognized checksum format '%s'\n" "$checksum_format"
     25 		exit 1
     26 		;;
     27 esac
     28 
     29 check() {
     30 	test -e "$filename" || return 1
     31 	ls -l "$filename"
     32 	find "$filename" -type f -size +"$size"c -delete
     33 	case $(find "$filename" -type f -size "$size"c -print) in
     34 		($filename);;
     35 		(*) return 1;;
     36 	esac
     37 	if printf '%s  %s\n' "$checksum" "$filename" | ${checksum_format}sum -c -; then
     38 		ln -sf "../../downloads/$checksum_format/$checksum" "$pthbs_cache/link/file-$checksum_format/" || exit 1
     39 		return 0
     40 	fi
     41 	rm -v "$filename"
     42 	exit 1
     43 }
     44 
     45 mkdir -p "$pthbs_cache/downloads/$checksum_format" || exit $?
     46 
     47 if check; then
     48 	exit 0
     49 fi
     50 
     51 while test $# -gt 0; do
     52 	wget -cqO "$filename" -- "$1"
     53 	if check; then
     54 		exit 0
     55 	fi
     56 	shift
     57 done
     58 
     59 printf>&2 "FATAL: could not download file\n"
     60 exit 1