mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-09-23 12:47:15 +02:00
add edit_yaml_config function (#15484)
This commit is contained in:
@@ -266,6 +266,47 @@ download_gpg_key() {
|
|||||||
return 7
|
return 7
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Edit a key-value pair in a YAML configuration file.
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# - Finds the first occurrence of the given key in the YAML file and replaces
|
||||||
|
# its value in-place using sed.
|
||||||
|
# - Handles both quoted and unquoted values on the same line.
|
||||||
|
# - The key is matched at the start of a line (optionally preceded by spaces),
|
||||||
|
# followed by a colon and optional whitespace.
|
||||||
|
# - If the key is not found, the function exits with a non-zero status and
|
||||||
|
# prints an error message.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# edit_yaml_config "/opt/myapp/config.yml" "database_host" "localhost"
|
||||||
|
# edit_yaml_config "/opt/myapp/config.yml" "port" "5432"
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# $1 - Path to the YAML file
|
||||||
|
# $2 - Key to find (e.g. "database_host")
|
||||||
|
# $3 - New value to set (e.g. "localhost")
|
||||||
|
#
|
||||||
|
# Returns: 0 on success, 1 if the file does not exist or the key is not found
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
edit_yaml_config() {
|
||||||
|
local file="$1"
|
||||||
|
local key="$2"
|
||||||
|
local value="$3"
|
||||||
|
|
||||||
|
if [[ ! -f "$file" ]]; then
|
||||||
|
msg_error "edit_yaml_config: file not found: $file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -qE "^[[:space:]]*${key}[[:space:]]*:" "$file"; then
|
||||||
|
msg_error "edit_yaml_config: key '${key}' not found in $file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -i "s|^\([[:space:]]*${key}[[:space:]]*:\).*|\1 ${value}|" "$file"
|
||||||
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# Cache installed version to avoid repeated checks
|
# Cache installed version to avoid repeated checks
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user