From 315c528306ad91de2a705da79155c71e10147b0d Mon Sep 17 00:00:00 2001 From: librelad Date: Sat, 23 May 2026 12:40:32 +0100 Subject: [PATCH] refactor(webui): silence per-file touch/chown noise in data generators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The WebUI data snapshots (locations.json, dashboard.json, snapshots_*.json, etc.) are regenerated on every wizard/config change. Each file emitted two extra success lines via createTouch — "Touching " and "Updating with ownership" — which spammed the output around the genuinely useful "... JSON regenerated" line. Add an optional "silent" flag to createTouch (third arg; default keeps the existing loud behaviour for interactive install flows) and pass it from every WebUI data generator/task. Touch + chown still run; only the logging is suppressed for these background regenerations. Co-Authored-By: Claude Opus 4.7 Signed-off-by: librelad --- scripts/function/file/create_touch.sh | 16 +++++++++++----- .../webui/data/generators/apps/webui_config.sh | 2 +- .../generators/apps/webui_gluetun_providers.sh | 2 +- .../webui/data/generators/apps/webui_services.sh | 8 ++++---- .../webui/data/generators/apps/webui_tools.sh | 2 +- .../generators/backup/webui_backup_app_status.sh | 2 +- .../generators/backup/webui_backup_dashboard.sh | 2 +- .../generators/backup/webui_backup_engines.sh | 4 ++-- .../generators/backup/webui_backup_locations.sh | 2 +- .../generators/backup/webui_backup_passwords.sh | 2 +- .../generators/backup/webui_backup_snapshots.sh | 2 +- .../categories/webui_create_app_categories.sh | 2 +- .../webui_create_app_config_categories.sh | 2 +- .../webui_create_app_field_mappings.sh | 2 +- .../generators/config/webui_generate_configs.sh | 2 +- .../data/generators/system/webui_system_disk.sh | 2 +- .../data/generators/system/webui_system_info.sh | 2 +- .../generators/system/webui_system_memory.sh | 2 +- .../generators/system/webui_system_update.sh | 2 +- scripts/webui/data/tasks/webui_task_files.sh | 4 ++-- scripts/webui/data/utils/webui_app_log.sh | 2 +- 21 files changed, 36 insertions(+), 30 deletions(-) diff --git a/scripts/function/file/create_touch.sh b/scripts/function/file/create_touch.sh index a500c8b..5a0d254 100755 --- a/scripts/function/file/create_touch.sh +++ b/scripts/function/file/create_touch.sh @@ -1,16 +1,22 @@ #!/bin/bash -createTouch() +createTouch() { local file="$1" local user_name="$2" + local silent_flag="$3" local file_name=$(basename "$file") local file_dir=$(dirname "$file") local clean_dir=$(echo "$file" | sed 's#//*#/#g') - local result=$(sudo touch "$clean_dir") - checkSuccess "Touching $file_name" + if [ "$silent_flag" == "silent" ]; then + sudo touch "$clean_dir" + sudo chown $user_name:$user_name "$file" + else + local result=$(sudo touch "$clean_dir") + checkSuccess "Touching $file_name" - local result=$(sudo chown $user_name:$user_name "$file") - checkSuccess "Updating $file_name with $user_name ownership" + local result=$(sudo chown $user_name:$user_name "$file") + checkSuccess "Updating $file_name with $user_name ownership" + fi } diff --git a/scripts/webui/data/generators/apps/webui_config.sh b/scripts/webui/data/generators/apps/webui_config.sh index 0d5eccb..0cb4926 100644 --- a/scripts/webui/data/generators/apps/webui_config.sh +++ b/scripts/webui/data/generators/apps/webui_config.sh @@ -227,7 +227,7 @@ EOF # Already root via start.sh — drop redundant sudo. if [ $? -eq 0 ]; then mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/apps/webui_gluetun_providers.sh b/scripts/webui/data/generators/apps/webui_gluetun_providers.sh index cb25f28..e8bcfdb 100644 --- a/scripts/webui/data/generators/apps/webui_gluetun_providers.sh +++ b/scripts/webui/data/generators/apps/webui_gluetun_providers.sh @@ -71,7 +71,7 @@ webuiGenerateGluetunProviders() { if [ -s "$tmp" ]; then mv "$tmp" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" [[ -n "$new_etag" ]] && echo "$new_etag" | tee "$etag_file" >/dev/null isSuccessful "Refreshed gluetun provider snapshot ($(jq '.providers | length' "$output_file") providers)." else diff --git a/scripts/webui/data/generators/apps/webui_services.sh b/scripts/webui/data/generators/apps/webui_services.sh index f7ac765..7b96758 100755 --- a/scripts/webui/data/generators/apps/webui_services.sh +++ b/scripts/webui/data/generators/apps/webui_services.sh @@ -28,7 +28,7 @@ EOF echo " ]" >> "$temp_file" echo "}" >> "$temp_file" mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" fi # Get all installed apps @@ -40,7 +40,7 @@ EOF echo " ]" >> "$temp_file" echo "}" >> "$temp_file" mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" fi # Process each app @@ -293,7 +293,7 @@ EOF echo " ]" >> "$temp_file" echo "}" >> "$temp_file" mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" echo "No services found to generate" fi @@ -304,7 +304,7 @@ EOF if [ $? -eq 0 ]; then mv "$temp_file" "$output_file" # Set proper ownership for web UI access - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/apps/webui_tools.sh b/scripts/webui/data/generators/apps/webui_tools.sh index f5a4e88..e4d8a53 100644 --- a/scripts/webui/data/generators/apps/webui_tools.sh +++ b/scripts/webui/data/generators/apps/webui_tools.sh @@ -423,6 +423,6 @@ JSON fi mv "$tmp" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" isSuccessful "Generated apps-tools.json ($(jq '[.apps[].tools | length] | add' "$output_file" 2>/dev/null || echo "?") tool(s) across $(jq '.apps | length' "$output_file" 2>/dev/null || echo "?") app(s))." } diff --git a/scripts/webui/data/generators/backup/webui_backup_app_status.sh b/scripts/webui/data/generators/backup/webui_backup_app_status.sh index d9c6dbf..b8a9620 100644 --- a/scripts/webui/data/generators/backup/webui_backup_app_status.sh +++ b/scripts/webui/data/generators/backup/webui_backup_app_status.sh @@ -53,5 +53,5 @@ webuiGenerateBackupAppStatus() echo "$content" | sudo tee "$temp_file" >/dev/null sudo mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" } diff --git a/scripts/webui/data/generators/backup/webui_backup_dashboard.sh b/scripts/webui/data/generators/backup/webui_backup_dashboard.sh index c286515..bf1d610 100644 --- a/scripts/webui/data/generators/backup/webui_backup_dashboard.sh +++ b/scripts/webui/data/generators/backup/webui_backup_dashboard.sh @@ -81,6 +81,6 @@ webuiGenerateBackupDashboard() echo "$content" | sudo tee "$temp_file" >/dev/null sudo mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" isSuccessful "Backup dashboard JSON regenerated" } diff --git a/scripts/webui/data/generators/backup/webui_backup_engines.sh b/scripts/webui/data/generators/backup/webui_backup_engines.sh index 3545ba8..d11c107 100644 --- a/scripts/webui/data/generators/backup/webui_backup_engines.sh +++ b/scripts/webui/data/generators/backup/webui_backup_engines.sh @@ -23,7 +23,7 @@ webuiGenerateBackupEngines() local base base=$(basename "$f") sudo cp "$f" "$out_dir/$base" - createTouch "$out_dir/$base" "$docker_install_user" + createTouch "$out_dir/$base" "$docker_install_user" "silent" local id="${base%.json}" $first || index+="," first=false @@ -33,7 +33,7 @@ webuiGenerateBackupEngines() local idx_file="$out_dir/index.json" echo "{\"engines\":$index,\"generated_at\":\"$(date -Iseconds)\"}" | sudo tee "$idx_file" >/dev/null - createTouch "$idx_file" "$docker_install_user" + createTouch "$idx_file" "$docker_install_user" "silent" isSuccessful "Engines JSON regenerated" } diff --git a/scripts/webui/data/generators/backup/webui_backup_locations.sh b/scripts/webui/data/generators/backup/webui_backup_locations.sh index 46001ca..4ad969c 100644 --- a/scripts/webui/data/generators/backup/webui_backup_locations.sh +++ b/scripts/webui/data/generators/backup/webui_backup_locations.sh @@ -88,6 +88,6 @@ webuiGenerateBackupLocations() echo "$content" | sudo tee "$temp_file" >/dev/null sudo mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" isSuccessful "Locations JSON regenerated" } diff --git a/scripts/webui/data/generators/backup/webui_backup_passwords.sh b/scripts/webui/data/generators/backup/webui_backup_passwords.sh index c926ac8..30674e6 100644 --- a/scripts/webui/data/generators/backup/webui_backup_passwords.sh +++ b/scripts/webui/data/generators/backup/webui_backup_passwords.sh @@ -37,6 +37,6 @@ webuiGenerateBackupPasswords() chmod 0600 "$temp_file" mv "$temp_file" "$output_file" - createTouch "$output_file" "${docker_install_user:-${sudo_user_name:-libreportal}}" + createTouch "$output_file" "${docker_install_user:-${sudo_user_name:-libreportal}}" "silent" chmod 0600 "$output_file" } diff --git a/scripts/webui/data/generators/backup/webui_backup_snapshots.sh b/scripts/webui/data/generators/backup/webui_backup_snapshots.sh index 96d9df4..3058630 100644 --- a/scripts/webui/data/generators/backup/webui_backup_snapshots.sh +++ b/scripts/webui/data/generators/backup/webui_backup_snapshots.sh @@ -34,7 +34,7 @@ webuiGenerateBackupSnapshots() echo "$content" | sudo tee "$temp_file" >/dev/null sudo mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" done isSuccessful "Snapshots JSON regenerated (${#indices[@]} location(s))" diff --git a/scripts/webui/data/generators/categories/webui_create_app_categories.sh b/scripts/webui/data/generators/categories/webui_create_app_categories.sh index e3af656..d39668d 100755 --- a/scripts/webui/data/generators/categories/webui_create_app_categories.sh +++ b/scripts/webui/data/generators/categories/webui_create_app_categories.sh @@ -97,7 +97,7 @@ EOF if [ $? -eq 0 ]; then sudo mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$docker_install_user" + createTouch "$final_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/categories/webui_create_app_config_categories.sh b/scripts/webui/data/generators/categories/webui_create_app_config_categories.sh index 6cd0363..31aa1c4 100755 --- a/scripts/webui/data/generators/categories/webui_create_app_config_categories.sh +++ b/scripts/webui/data/generators/categories/webui_create_app_config_categories.sh @@ -79,7 +79,7 @@ EOF if [ $? -eq 0 ]; then sudo mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$docker_install_user" + createTouch "$final_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/categories/webui_create_app_field_mappings.sh b/scripts/webui/data/generators/categories/webui_create_app_field_mappings.sh index a787cec..4ac0565 100755 --- a/scripts/webui/data/generators/categories/webui_create_app_field_mappings.sh +++ b/scripts/webui/data/generators/categories/webui_create_app_field_mappings.sh @@ -792,7 +792,7 @@ RESTEOF sed -i "s|__INSTALL_NAME__|${install_name_safe}|g" "$temp_file" mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$docker_install_user" + createTouch "$final_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/config/webui_generate_configs.sh b/scripts/webui/data/generators/config/webui_generate_configs.sh index a1afdbf..0e8b633 100755 --- a/scripts/webui/data/generators/config/webui_generate_configs.sh +++ b/scripts/webui/data/generators/config/webui_generate_configs.sh @@ -294,7 +294,7 @@ EOF # Already running as root via start.sh — sudo was redundant overhead. if [ $? -eq 0 ]; then mv "$temp_file" "$output_file" - createTouch "$output_file" "$docker_install_user" + createTouch "$output_file" "$docker_install_user" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/system/webui_system_disk.sh b/scripts/webui/data/generators/system/webui_system_disk.sh index 50d7024..b8bba49 100755 --- a/scripts/webui/data/generators/system/webui_system_disk.sh +++ b/scripts/webui/data/generators/system/webui_system_disk.sh @@ -57,7 +57,7 @@ EOF if [ $? -eq 0 ]; then mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$sudo_user_name" + createTouch "$final_file" "$sudo_user_name" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/system/webui_system_info.sh b/scripts/webui/data/generators/system/webui_system_info.sh index a24e8e9..c1d1c5b 100755 --- a/scripts/webui/data/generators/system/webui_system_info.sh +++ b/scripts/webui/data/generators/system/webui_system_info.sh @@ -54,7 +54,7 @@ EOF if [ $? -eq 0 ]; then mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$sudo_user_name" + createTouch "$final_file" "$sudo_user_name" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/system/webui_system_memory.sh b/scripts/webui/data/generators/system/webui_system_memory.sh index 78c3abb..6174edb 100755 --- a/scripts/webui/data/generators/system/webui_system_memory.sh +++ b/scripts/webui/data/generators/system/webui_system_memory.sh @@ -51,7 +51,7 @@ EOF if [ $? -eq 0 ]; then mv "$temp_file" "$final_file" # Set proper ownership for web UI access using createTouch - createTouch "$final_file" "$sudo_user_name" + createTouch "$final_file" "$sudo_user_name" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/generators/system/webui_system_update.sh b/scripts/webui/data/generators/system/webui_system_update.sh index b54185d..982d544 100755 --- a/scripts/webui/data/generators/system/webui_system_update.sh +++ b/scripts/webui/data/generators/system/webui_system_update.sh @@ -92,7 +92,7 @@ webuiSystemUpdateCheck() { EOF if [ $? -eq 0 ]; then mv "$temp_file" "$final_file" - createTouch "$final_file" "$sudo_user_name" + createTouch "$final_file" "$sudo_user_name" "silent" else rm -f "$temp_file" 2>/dev/null fi diff --git a/scripts/webui/data/tasks/webui_task_files.sh b/scripts/webui/data/tasks/webui_task_files.sh index 16b5a08..218294c 100755 --- a/scripts/webui/data/tasks/webui_task_files.sh +++ b/scripts/webui/data/tasks/webui_task_files.sh @@ -15,7 +15,7 @@ webuiEnsureTaskFiles() { # Create queue.json if it doesn't exist if [ ! -f "$task_dir/queue.json" ]; then echo " Creating queue.json" - createTouch "$task_dir/queue.json" $docker_install_user + createTouch "$task_dir/queue.json" $docker_install_user "silent" local result=$(echo "[]" | sudo tee "$task_dir/queue.json" > /dev/null) checkSuccess "Created queue.json..." else @@ -25,7 +25,7 @@ webuiEnsureTaskFiles() { # Create current.json if it doesn't exist if [ ! -f "$task_dir/current.json" ]; then echo " Creating current.json" - createTouch "$task_dir/current.json" $docker_install_user + createTouch "$task_dir/current.json" $docker_install_user "silent" local result=$(echo '{}' | sudo tee "$task_dir/current.json" > /dev/null) checkSuccess "Created current.json..." else diff --git a/scripts/webui/data/utils/webui_app_log.sh b/scripts/webui/data/utils/webui_app_log.sh index 9dbdc55..b9cd390 100755 --- a/scripts/webui/data/utils/webui_app_log.sh +++ b/scripts/webui/data/utils/webui_app_log.sh @@ -18,7 +18,7 @@ webuiUpdateAppLog() if [[ "$type" == "install" ]]; then # Create WebUI log file if it doesn't exist if [ ! -f "${log_file}" ]; then - createTouch "$log_file" $sudo_user_name + createTouch "$log_file" $sudo_user_name "silent" echo "=== LibrePortal Installation Started at $(date) ===" | sudo tee "${log_file}" > /dev/null fi elif [[ "$type" == "uninstall" ]]; then