From 0e7095621d05afd0f2206638eb08f6816ca59292 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Jun 2025 15:11:36 +0200 Subject: [PATCH] test --- install/hanko-install.sh | 6 +--- misc/tools.func | 68 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 5 deletions(-) diff --git a/install/hanko-install.sh b/install/hanko-install.sh index 444b0f25..30ad114f 100644 --- a/install/hanko-install.sh +++ b/install/hanko-install.sh @@ -13,11 +13,7 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -curl -sSL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ - -o /usr/local/bin/yq && chmod +x /usr/local/bin/yq -msg_ok "Installed Dependencies" - +setup_yq PG_VERSION="16" install_postgresql msg_info "Setting up PostgreSQL Database" diff --git a/misc/tools.func b/misc/tools.func index 0ea3580a..d5c2f2c2 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -1444,3 +1444,71 @@ install_adminer() { msg_ok "Adminer available at /adminer (Debian/Ubuntu)" fi } + +# ------------------------------------------------------------------------------ +# Installs or updates yq (mikefarah/yq - Go version). +# +# Description: +# - Checks if yq is installed and from correct source +# - Compares with latest release on GitHub +# - Updates if outdated or wrong implementation +# ------------------------------------------------------------------------------ + +function setup_yq() { + msg_info "Setup yq (mikefarah/yq)" + + local TMP_DIR + TMP_DIR=$(mktemp -d) + local CURRENT_VERSION + local BINARY_PATH="/usr/local/bin/yq" + local GITHUB_REPO="mikefarah/yq" + + if command -v yq &>/dev/null; then + if ! yq --version 2>&1 | grep -q 'mikefarah'; then + msg_info "Found incompatible yq implementation, replacing..." + rm -f "$(command -v yq)" + else + CURRENT_VERSION=$(yq --version | awk '{print $NF}' | sed 's/v//') + fi + fi + + # Fetch latest version from GitHub + local RELEASE_JSON + RELEASE_JSON=$(curl -fsSL "https://api.github.com/repos/${GITHUB_REPO}/releases/latest") + local LATEST_VERSION + LATEST_VERSION=$(echo "$RELEASE_JSON" | jq -r '.tag_name' | sed 's/^v//') + + if [[ -z "$LATEST_VERSION" ]]; then + msg_error "Could not determine latest yq version from GitHub." + rm -rf "$TMP_DIR" + return + fi + + if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then + msg_ok "yq is already at version $CURRENT_VERSION" + rm -rf "$TMP_DIR" + return + fi + + msg_info "Installing/Updating yq to $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" + + if [[ ! -x "$BINARY_PATH" ]]; then + msg_error "Failed to install yq to $BINARY_PATH" + rm -rf "$TMP_DIR" + return + fi + + rm -rf "$TMP_DIR" + hash -r + + local FINAL_VERSION + FINAL_VERSION=$("$BINARY_PATH" --version 2>/dev/null | awk '{print $NF}') + if [[ "$FINAL_VERSION" == "v$LATEST_VERSION" ]]; then + msg_ok "yq installed/updated to version $LATEST_VERSION" + else + msg_error "yq installation incomplete or version mismatch" + fi +}