44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Public Settings.qml values are the compatibility surface consumed throughout
|
|
# the shell. Once a value becomes user-configurable, this file must read it from
|
|
# DesktopPreferences rather than keeping a second hardcoded source of truth.
|
|
|
|
set -euo pipefail
|
|
|
|
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
settings="$repo_dir/config/dot/quickshell/config/Settings.qml"
|
|
|
|
fail() {
|
|
printf 'settings hardcoded values contract: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
properties=(
|
|
temperatureUnit
|
|
weatherRefreshMinutes
|
|
vitalsIntervalMs
|
|
notificationTimeoutMs
|
|
notificationTimeoutCriticalMs
|
|
notificationHistoryLimit
|
|
maxVisibleToasts
|
|
screenshotDir
|
|
recordingDir
|
|
recorderArgs
|
|
)
|
|
|
|
for property in "${properties[@]}"; do
|
|
count="$(rg -c \
|
|
"^[[:space:]]*readonly property [A-Za-z]+ ${property}: DesktopPreferences\\.get\\(\"${property}\"\\)[[:space:]]*(//.*)?$" \
|
|
"$settings" || true)"
|
|
[[ "$count" == "1" ]] \
|
|
|| fail "$property must use DesktopPreferences.get(\"$property\") exactly once"
|
|
done
|
|
|
|
# dockPinned was already migrated on the shared branch. Pinning it here keeps a
|
|
# later bulk edit from accidentally restoring the old hardcoded app list.
|
|
rg -q '^[[:space:]]*readonly property var dockPinned: DesktopPreferences\.get\("dockPinned"\)[[:space:]]*$' "$settings" \
|
|
|| fail 'dockPinned no longer reads DesktopPreferences exactly'
|
|
|
|
printf 'settings hardcoded values contract: PASS\n'
|