mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-05-06 05:03:08 +00:00
Tools-Func: Better Function Handling + gs (#4238)
This commit is contained in:
parent
bff0ab3d3d
commit
0ea0f56e1b
@ -1,3 +1,4 @@
|
||||
#!/bin/bash
|
||||
install_node_and_modules() {
|
||||
local NODE_VERSION="${NODE_VERSION:-22}"
|
||||
local NODE_MODULE="${NODE_MODULE:-}"
|
||||
@ -47,7 +48,7 @@ install_node_and_modules() {
|
||||
msg_ok "Installed Node.js ${NODE_VERSION}"
|
||||
fi
|
||||
|
||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
|
||||
# Install global Node modules
|
||||
if [[ -n "$NODE_MODULE" ]]; then
|
||||
@ -345,7 +346,7 @@ install_go() {
|
||||
esac
|
||||
|
||||
# Determine version
|
||||
if [[ -z "$GO_VERSION" || "$GO_VERSION" == "latest" ]]; then
|
||||
if [[ -z "${GO_VERSION:-}" || "${GO_VERSION}" == "latest" ]]; then
|
||||
GO_VERSION=$(curl -fsSL https://go.dev/VERSION?m=text | head -n1 | sed 's/^go//')
|
||||
if [[ -z "$GO_VERSION" ]]; then
|
||||
msg_error "Could not determine latest Go version"
|
||||
@ -389,7 +390,7 @@ install_go() {
|
||||
}
|
||||
|
||||
install_java() {
|
||||
local JAVA_VERSION="${JAVA_VERSION:-17}"
|
||||
local JAVA_VERSION="${JAVA_VERSION:-21}"
|
||||
local DISTRO_CODENAME
|
||||
DISTRO_CODENAME=$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)
|
||||
local DESIRED_PACKAGE="temurin-${JAVA_VERSION}-jdk"
|
||||
@ -658,8 +659,8 @@ setup_local_ip_helper() {
|
||||
|
||||
# Install networkd-dispatcher if not present
|
||||
if ! dpkg -s networkd-dispatcher >/dev/null 2>&1; then
|
||||
$STD apt-get update -qq
|
||||
$STD apt-get install -yq networkd-dispatcher
|
||||
apt-get update -qq
|
||||
apt-get install -yq networkd-dispatcher
|
||||
fi
|
||||
|
||||
# Write update_local_ip.sh
|
||||
@ -757,6 +758,34 @@ import_local_ip() {
|
||||
export LOCAL_IP
|
||||
}
|
||||
|
||||
function download_with_progress() {
|
||||
local url="$1"
|
||||
local output="$2"
|
||||
if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
|
||||
|
||||
if ! command -v pv &>/dev/null; then
|
||||
$STD apt-get install -y pv
|
||||
fi
|
||||
set -o pipefail
|
||||
|
||||
# Content-Length aus HTTP-Header holen
|
||||
local content_length
|
||||
content_length=$(curl -fsSLI "$url" | awk '/Content-Length/ {print $2}' | tr -d '\r' || true)
|
||||
|
||||
if [[ -z "$content_length" ]]; then
|
||||
#msg_warn "Content-Length not available, falling back to plain download"
|
||||
if ! curl -fL# -o "$output" "$url"; then
|
||||
msg_error "Download failed"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if ! curl -fsSL "$url" | pv -s "$content_length" >"$output"; then
|
||||
msg_error "Download failed"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_uv() {
|
||||
$STD msg_info "Checking uv installation..."
|
||||
UV_BIN="/usr/local/bin/uv"
|
||||
@ -818,3 +847,57 @@ function ensure_usr_local_bin_persist() {
|
||||
chmod +x "$PROFILE_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_gs() {
|
||||
msg_info "Setup Ghostscript"
|
||||
mkdir -p /tmp
|
||||
TMP_DIR=$(mktemp -d)
|
||||
CURRENT_VERSION=$(gs --version 2>/dev/null || echo "0")
|
||||
|
||||
RELEASE_JSON=$(curl -fsSL https://api.github.com/repos/ArtifexSoftware/ghostpdl-downloads/releases/latest)
|
||||
LATEST_VERSION=$(echo "$RELEASE_JSON" | grep '"tag_name":' | head -n1 | cut -d '"' -f4 | sed 's/^gs//')
|
||||
LATEST_VERSION_DOTTED=$(echo "$RELEASE_JSON" | grep '"name":' | head -n1 | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
|
||||
|
||||
if [[ -z "$LATEST_VERSION" ]]; then
|
||||
msg_error "Could not determine latest Ghostscript version from GitHub."
|
||||
rm -rf "$TMP_DIR"
|
||||
return
|
||||
fi
|
||||
|
||||
if dpkg --compare-versions "$CURRENT_VERSION" ge "$LATEST_VERSION_DOTTED"; then
|
||||
msg_ok "Ghostscript is already at version $CURRENT_VERSION"
|
||||
rm -rf "$TMP_DIR"
|
||||
return
|
||||
fi
|
||||
|
||||
msg_info "Installing/Updating Ghostscript to $LATEST_VERSION_DOTTED"
|
||||
curl -fsSL "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${LATEST_VERSION}/ghostscript-${LATEST_VERSION_DOTTED}.tar.gz" -o "$TMP_DIR/ghostscript.tar.gz"
|
||||
|
||||
if ! tar -xzf "$TMP_DIR/ghostscript.tar.gz" -C "$TMP_DIR"; then
|
||||
msg_error "Failed to extract Ghostscript archive."
|
||||
rm -rf "$TMP_DIR"
|
||||
return
|
||||
fi
|
||||
|
||||
cd "$TMP_DIR/ghostscript-${LATEST_VERSION_DOTTED}" || {
|
||||
msg_error "Failed to enter Ghostscript source directory."
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
$STD apt-get install -y build-essential libpng-dev zlib1g-dev
|
||||
./configure >/dev/null && make && sudo make install >/dev/null
|
||||
local EXIT_CODE=$?
|
||||
hash -r
|
||||
if [[ ! -x "$(command -v gs)" ]]; then
|
||||
if [[ -x /usr/local/bin/gs ]]; then
|
||||
ln -sf /usr/local/bin/gs /usr/bin/gs
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -rf "$TMP_DIR"
|
||||
|
||||
if [[ $EXIT_CODE -eq 0 ]]; then
|
||||
msg_ok "Ghostscript installed/updated to version $LATEST_VERSION_DOTTED"
|
||||
else
|
||||
msg_error "Ghostscript installation failed"
|
||||
fi
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user