40 lines
1011 B
Bash
40 lines
1011 B
Bash
#!/usr/bin/env bash
|
|
# Pure VirtIO filename helpers shared by TA-ProxMenu and its tests.
|
|
|
|
TAPM_VIRTIO_FILENAME_FROM_URL() {
|
|
local url="${1%%\?*}"
|
|
local filename="${url##*/}"
|
|
|
|
[[ "$filename" =~ ^virtio-win(-0\.1\.[0-9]+)?\.iso$ ]] || return 1
|
|
printf '%s\n' "$filename"
|
|
}
|
|
|
|
TAPM_VIRTIO_LABELED_FILENAME() {
|
|
local source_filename="$1"
|
|
local label="$2"
|
|
local version=''
|
|
|
|
[[ "$label" =~ ^[a-z0-9-]+$ ]] || return 1
|
|
if [[ "$source_filename" =~ ^virtio-win-(0\.1\.[0-9]+)\.iso$ ]]; then
|
|
version="${BASH_REMATCH[1]}"
|
|
elif [[ "$source_filename" != 'virtio-win.iso' ]]; then
|
|
return 1
|
|
fi
|
|
|
|
printf 'virtio-win-%s%s.iso\n' "$label" "${version:+-${version}}"
|
|
}
|
|
|
|
TAPM_VIRTIO_CACHE_VALID() {
|
|
local checked_at="${1:-}"
|
|
local now="${2:-}"
|
|
local max_age="${3:-}"
|
|
local filename="${4:-}"
|
|
|
|
[[ "$checked_at" =~ ^[0-9]+$ &&
|
|
"$now" =~ ^[0-9]+$ &&
|
|
"$max_age" =~ ^[1-9][0-9]*$ &&
|
|
"$filename" =~ ^virtio-win(-[0-9]+\.[0-9]+\.[0-9]+)?\.iso$ ]] ||
|
|
return 1
|
|
(( now >= checked_at && now - checked_at < max_age ))
|
|
}
|