feat: add bds core, locale updates and safety fixes

This commit is contained in:
2026-05-31 14:01:34 +03:00
parent d1686355e8
commit c769140913
34 changed files with 1535 additions and 12 deletions

65
lib/download.sh Normal file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env bash
http_get() {
local url="$1"
curl -fsSL -H "User-Agent: AstraDeploy/${DEPLOY_VERSION}" "$url"
}
get_papermc_download_url() {
local project="$1"
local version="$2"
if [[ "$version" == "latest" ]]; then
version="$(http_get "https://fill.papermc.io/v3/projects/${project}" | jq -r '.versions | if type=="array" then .[-1] else (to_entries | last | .value[0]) end')"
fi
local builds_json
builds_json="$(http_get "https://fill.papermc.io/v3/projects/${project}/versions/${version}/builds")"
local url
url="$(printf '%s\n' "$builds_json" | jq -r '.builds | map(select(.channel=="STABLE")) | .[0].downloads."server:default".url // empty')"
if [[ -z "$url" || "$url" == "null" ]]; then
fail "$(t no_stable_build "$project" "$version")"
fi
echo "$url"
}
get_purpur_download_url() {
local version="$1"
local build="${2:-latest}"
if [[ "$version" == "latest" ]]; then
version="$(http_get "https://api.purpurmc.org/v2/purpur/" | jq -r '.versions | .[-1]')"
fi
if [[ "$build" == "latest" ]]; then
echo "https://api.purpurmc.org/v2/purpur/${version}/latest/download"
else
echo "https://api.purpurmc.org/v2/purpur/${version}/${build}/download"
fi
}
get_github_release_asset_url() {
local repo="$1"
local pattern="$2"
http_get "https://api.github.com/repos/${repo}/releases/latest" \
| jq -r --arg pattern "$pattern" '.assets[] | select(.name | test($pattern)) | .browser_download_url' | head -n 1
}
download_as_user() {
local url="$1"
local target="$2"
emit_step "download_start" "$url"
run_cmd sudo -u "$SERVER_USER" bash -lc "curl -fL \"$url\" -o \"${target}\""
emit_step "download_completed" "$target"
}
download_as_user_atomic() {
local url="$1"
local target="$2"
local tmp="${target}.tmp.${RANDOM}.$(date +%s)"
download_as_user "$url" "$tmp"
run_cmd mv "$tmp" "$target"
emit_step "download_swap" "$target"
}