50 lines
862 B
Bash
50 lines
862 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
log_info() {
|
|
printf '[hy2xs-build] %s\n' "$*"
|
|
}
|
|
|
|
log_step() {
|
|
printf '\n[hy2xs-build] ==> %s\n' "$*"
|
|
}
|
|
|
|
fail() {
|
|
printf '[hy2xs-build] ERROR: %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
require_tool() {
|
|
local tool="$1"
|
|
command -v "$tool" >/dev/null 2>&1 || fail "required tool not found: $tool"
|
|
}
|
|
|
|
version_ge() {
|
|
[ "$(printf '%s\n%s\n' "$2" "$1" | sort -V | head -n 1)" = "$2" ]
|
|
}
|
|
|
|
copy_dir_contents() {
|
|
local src="$1"
|
|
local dst="$2"
|
|
|
|
mkdir -p "$dst"
|
|
if [ -d "$src" ]; then
|
|
cp -a "$src"/. "$dst"/
|
|
else
|
|
fail "directory not found: $src"
|
|
fi
|
|
}
|
|
|
|
download_file() {
|
|
local url="$1"
|
|
local dst="$2"
|
|
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fsSL "$url" -o "$dst"
|
|
elif command -v wget >/dev/null 2>&1; then
|
|
wget -qO "$dst" "$url"
|
|
else
|
|
fail "curl or wget is required to download $url"
|
|
fi
|
|
}
|