diff --git a/misc/tools.func b/misc/tools.func index cae5cf84..2bc88b14 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -941,8 +941,8 @@ function 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 + $STD apt-get update + $STD apt-get install -y networkd-dispatcher fi # Write update_local_ip.sh @@ -999,8 +999,6 @@ EOF chmod +x "$DISPATCHER_SCRIPT" systemctl enable -q --now networkd-dispatcher.service - - $STD msg_ok "LOCAL_IP helper installed using networkd-dispatcher" } # ------------------------------------------------------------------------------ @@ -1070,7 +1068,6 @@ function download_with_progress() { 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 @@ -1092,7 +1089,6 @@ function download_with_progress() { # ------------------------------------------------------------------------------ function setup_uv() { - $STD msg_info "Checking uv installation..." local UV_BIN="/usr/local/bin/uv" local TMP_DIR TMP_DIR=$(mktemp -d) @@ -1128,15 +1124,14 @@ function setup_uv() { local INSTALLED_VERSION INSTALLED_VERSION=$($UV_BIN -V | awk '{print $2}') if [[ "$INSTALLED_VERSION" == "$LATEST_VERSION" ]]; then - $STD msg_ok "uv is already at the latest version ($INSTALLED_VERSION)" rm -rf "$TMP_DIR" [[ ":$PATH:" != *":/usr/local/bin:"* ]] && export PATH="/usr/local/bin:$PATH" return 0 else - $STD msg_info "Updating uv from $INSTALLED_VERSION to $LATEST_VERSION" + msg_info "Updating uv from $INSTALLED_VERSION to $LATEST_VERSION" fi else - $STD msg_info "Installing uv $LATEST_VERSION" + msg_info "Setup uv $LATEST_VERSION" fi # Download and install manually @@ -1161,12 +1156,10 @@ function setup_uv() { rm -rf "$TMP_DIR" ensure_usr_local_bin_persist - msg_ok "uv $LATEST_VERSION installed" + msg_ok "Setup uv $LATEST_VERSION" # Optional: install specific Python version if [[ -n "${PYTHON_VERSION:-}" ]]; then - $STD msg_info "Ensuring Python $PYTHON_VERSION is available via uv..." - local VERSION_MATCH VERSION_MATCH=$(uv python list --only-downloads | grep -E "^cpython-${PYTHON_VERSION//./\\.}\.[0-9]+-linux" | @@ -1177,14 +1170,12 @@ function setup_uv() { return 1 fi - if uv python list | grep -q "cpython-${VERSION_MATCH}-linux.*uv/python"; then - $STD msg_ok "Python $VERSION_MATCH already installed via uv" - else + if ! uv python list | grep -q "cpython-${VERSION_MATCH}-linux.*uv/python"; then if ! $STD uv python install "$VERSION_MATCH"; then msg_error "Failed to install Python $VERSION_MATCH via uv" return 1 fi - msg_ok "Installed Python $VERSION_MATCH via uv" + msg_ok "Setup Python $VERSION_MATCH via uv" fi fi } @@ -1214,7 +1205,6 @@ function ensure_usr_local_bin_persist() { # ------------------------------------------------------------------------------ function setup_gs() { - msg_info "Setup Ghostscript" mkdir -p /tmp TMP_DIR=$(mktemp -d) CURRENT_VERSION=$(gs --version 2>/dev/null || echo "0") @@ -1230,12 +1220,11 @@ function setup_gs() { 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" + msg_info "Setup Ghostscript $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 @@ -1261,7 +1250,7 @@ function setup_gs() { rm -rf "$TMP_DIR" if [[ $EXIT_CODE -eq 0 ]]; then - msg_ok "Ghostscript installed/updated to version $LATEST_VERSION_DOTTED" + msg_ok "Setup Ghostscript $LATEST_VERSION_DOTTED" else msg_error "Ghostscript installation failed" fi @@ -1290,9 +1279,8 @@ function setup_ruby() { local TMP_DIR TMP_DIR=$(mktemp -d) - msg_info "Installing rbenv + ruby-build + Ruby $RUBY_VERSION" + msg_info "Setup Ruby $RUBY_VERSION" - # Fetch latest rbenv release tag from GitHub (e.g. v1.3.2 → 1.3.2) local RBENV_RELEASE RBENV_RELEASE=$(curl -fsSL https://api.github.com/repos/rbenv/rbenv/releases/latest | grep '"tag_name":' | cut -d '"' -f4 | sed 's/^v//') if [[ -z "$RBENV_RELEASE" ]]; then @@ -1301,14 +1289,12 @@ function setup_ruby() { return 1 fi - # Download and extract rbenv release curl -fsSL "https://github.com/rbenv/rbenv/archive/refs/tags/v${RBENV_RELEASE}.tar.gz" -o "$TMP_DIR/rbenv.tar.gz" tar -xzf "$TMP_DIR/rbenv.tar.gz" -C "$TMP_DIR" mkdir -p "$RBENV_DIR" cp -r "$TMP_DIR/rbenv-${RBENV_RELEASE}/." "$RBENV_DIR/" cd "$RBENV_DIR" && src/configure && $STD make -C src - # Fetch latest ruby-build plugin release tag (e.g. v20250507 → 20250507) local RUBY_BUILD_RELEASE RUBY_BUILD_RELEASE=$(curl -fsSL https://api.github.com/repos/rbenv/ruby-build/releases/latest | grep '"tag_name":' | cut -d '"' -f4 | sed 's/^v//') if [[ -z "$RUBY_BUILD_RELEASE" ]]; then @@ -1317,44 +1303,35 @@ function setup_ruby() { return 1 fi - # Download and install ruby-build plugin curl -fsSL "https://github.com/rbenv/ruby-build/archive/refs/tags/v${RUBY_BUILD_RELEASE}.tar.gz" -o "$TMP_DIR/ruby-build.tar.gz" tar -xzf "$TMP_DIR/ruby-build.tar.gz" -C "$TMP_DIR" mkdir -p "$RBENV_DIR/plugins/ruby-build" cp -r "$TMP_DIR/ruby-build-${RUBY_BUILD_RELEASE}/." "$RBENV_DIR/plugins/ruby-build/" echo "$RUBY_BUILD_RELEASE" >"$RBENV_DIR/plugins/ruby-build/RUBY_BUILD_version.txt" - # Persist rbenv init to user's profile if ! grep -q 'rbenv init' "$PROFILE_FILE"; then echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >>"$PROFILE_FILE" echo 'eval "$(rbenv init -)"' >>"$PROFILE_FILE" fi - # Activate rbenv in current shell export PATH="$RBENV_DIR/bin:$PATH" eval "$("$RBENV_BIN" init - bash)" - # Install Ruby version if not already present - if "$RBENV_BIN" versions --bare | grep -qx "$RUBY_VERSION"; then - msg_ok "Ruby $RUBY_VERSION already installed" - else - msg_info "Installing Ruby ${RUBY_VERSION} (patience)" + if ! "$RBENV_BIN" versions --bare | grep -qx "$RUBY_VERSION"; then $STD "$RBENV_BIN" install "$RUBY_VERSION" fi - # Set Ruby version globally "$RBENV_BIN" global "$RUBY_VERSION" hash -r - # Optionally install Rails via gem if [[ "$RUBY_INSTALL_RAILS" == "true" ]]; then - msg_info "Installing latest Rails via gem" + msg_info "Setup Rails via gem" gem install rails - msg_ok "Rails $(rails -v) installed" + msg_ok "Setup Rails $(rails -v)" fi rm -rf "$TMP_DIR" - msg_ok "rbenv stack ready (Ruby $RUBY_VERSION)" + msg_ok "Setup Ruby $RUBY_VERSION" } # ------------------------------------------------------------------------------ @@ -1368,12 +1345,10 @@ function setup_ruby() { # ------------------------------------------------------------------------------ function create_selfsigned_certs() { local app=${APP:-$(echo "${APPLICATION,,}" | tr -d ' ')} - $STD msg_info "Creating Self-Signed Certificate" $STD openssl req -x509 -nodes -days 365 -newkey rsa:4096 \ -keyout /etc/ssl/private/"$app"-selfsigned.key \ -out /etc/ssl/certs/"$app"-selfsigned.crt \ -subj "/C=US/O=$app/OU=Domain Control Validated/CN=localhost" - $STD msg_ok "Created Self-Signed Certificate" } # ------------------------------------------------------------------------------ @@ -1400,11 +1375,11 @@ function setup_rust() { # rustup & toolchain if ! command -v rustup &>/dev/null; then - msg_info "Installing rustup" + msg_info "Setup Rust" curl -fsSL https://sh.rustup.rs | $STD sh -s -- -y --default-toolchain "$RUST_TOOLCHAIN" export PATH="$CARGO_BIN:$PATH" echo 'export PATH="$HOME/.cargo/bin:$PATH"' >>"$HOME/.profile" - msg_ok "Installed rustup with $RUST_TOOLCHAIN" + msg_ok "Setup Rust" else $STD rustup install "$RUST_TOOLCHAIN" $STD rustup default "$RUST_TOOLCHAIN" @@ -1429,20 +1404,21 @@ function setup_rust() { if [[ -n "$INSTALLED_VER" ]]; then if [[ -n "$VER" && "$VER" != "$INSTALLED_VER" ]]; then - msg_info "Updating $NAME from $INSTALLED_VER to $VER" + msg_info "Update $NAME: $INSTALLED_VER → $VER" $STD cargo install "$NAME" --version "$VER" --force + msg_ok "Updated $NAME to $VER" elif [[ -z "$VER" ]]; then - msg_info "Updating $NAME to latest" + msg_info "Update $NAME: $INSTALLED_VER → latest" $STD cargo install "$NAME" --force - else - msg_ok "$NAME@$INSTALLED_VER already up to date" + msg_ok "Updated $NAME to latest" fi else - msg_info "Installing $NAME ${VER:+($VER)}" + msg_info "Setup $NAME ${VER:+($VER)}" $STD cargo install "$NAME" ${VER:+--version "$VER"} + msg_ok "Setup $NAME ${VER:-latest}" fi done - msg_ok "All requested Rust crates processed" + msg_ok "Setup Rust" fi } @@ -1456,7 +1432,7 @@ function setup_rust() { function setup_adminer() { if grep -qi alpine /etc/os-release; then - msg_info "Installing Adminer (Alpine)" + msg_info "Setup Adminer (Alpine)" mkdir -p /var/www/localhost/htdocs/adminer if ! curl -fsSL https://github.com/vrana/adminer/releases/latest/download/adminer.php \ -o /var/www/localhost/htdocs/adminer/index.php; then @@ -1465,7 +1441,7 @@ function setup_adminer() { fi msg_ok "Adminer available at /adminer (Alpine)" else - msg_info "Installing Adminer (Debian/Ubuntu)" + msg_info "Setup Adminer (Debian/Ubuntu)" $STD apt-get install -y adminer $STD a2enconf adminer $STD systemctl reload apache2 @@ -1490,7 +1466,7 @@ function setup_yq() { local GITHUB_REPO="mikefarah/yq" if ! command -v jq &>/dev/null; then - $STD apt-get update -qq + $STD apt-get update $STD apt-get install -y jq || { msg_error "Failed to install jq" rm -rf "$TMP_DIR" @@ -1506,7 +1482,6 @@ function setup_yq() { fi fi - msg_info "Setup yq" local RELEASE_JSON RELEASE_JSON=$(curl -fsSL "https://api.github.com/repos/${GITHUB_REPO}/releases/latest") local LATEST_VERSION @@ -1519,11 +1494,10 @@ function setup_yq() { fi if [[ -n "$CURRENT_VERSION" && "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then - msg_ok "Setup yq ($CURRENT_VERSION)" - rm -rf "$TMP_DIR" return fi + msg_info "Setup yq ($LATEST_VERSION)" curl -fsSL "https://github.com/${GITHUB_REPO}/releases/download/v${LATEST_VERSION}/yq_linux_amd64" -o "$TMP_DIR/yq" chmod +x "$TMP_DIR/yq" mv "$TMP_DIR/yq" "$BINARY_PATH"