Publish tool cleanup and Framework monitoring refinements

This commit is contained in:
ajp_anton
2026-09-12 05:17:02 +00:00
parent db352083cf
commit 7f56368674
51 changed files with 1487 additions and 341 deletions
+29 -27
View File
@@ -17,6 +17,9 @@ minimum_pause_ms=100
minimum_tap_ms=10
maximum_tap_ms=150
output_event=BTN_MIDDLE
temporary_config=
temporary_override=
trap '[[ -z $temporary_config ]] || rm -f -- "$temporary_config"; [[ -z $temporary_override ]] || rm -f -- "$temporary_override"' EXIT
die()
{
@@ -33,13 +36,13 @@ require_root()
validate()
{
[[ $minimum_anchor_age_ms =~ ^[0-9]+$ ]] || die "minimum anchor age must be an integer"
[[ $minimum_pause_ms =~ ^[0-9]+$ ]] || die "minimum pause must be an integer"
[[ $minimum_tap_ms =~ ^[0-9]+$ ]] || die "minimum tap duration must be an integer"
[[ $maximum_tap_ms =~ ^[0-9]+$ ]] || die "maximum tap duration must be an integer"
(( minimum_anchor_age_ms <= 2000 )) || die "minimum anchor age must not exceed 2000 ms"
(( minimum_pause_ms <= 2000 )) || die "minimum pause must not exceed 2000 ms"
(( maximum_tap_ms >= 1 && minimum_tap_ms <= maximum_tap_ms && maximum_tap_ms <= 2000 )) || \
local name
for name in minimum_anchor_age_ms minimum_pause_ms minimum_tap_ms maximum_tap_ms; do
[[ ${!name} =~ ^0*([0-9]{1,4})$ ]] || die "${name//_/ } must be an integer between 0 and 2000"
printf -v "$name" '%d' "$((10#${BASH_REMATCH[1]}))"
(( ${!name} <= 2000 )) || die "${name//_/ } must not exceed 2000 ms"
done
(( maximum_tap_ms >= 1 && minimum_tap_ms <= maximum_tap_ms )) || \
die "tap durations must be between 0 and 2000 ms, with a positive maximum and minimum not exceeding maximum"
[[ $output_event =~ ^(BTN|KEY)_[A-Z0-9_]+$ ]] || \
die "output event must be an evdev BTN_* or KEY_* name"
@@ -51,7 +54,7 @@ read_config()
return 0
fi
while IFS='=' read -r key value; do
while IFS='=' read -r key value || [[ -n $key ]]; do
case $key in
MINIMUM_ANCHOR_AGE_MS) minimum_anchor_age_ms=$value ;;
MINIMUM_PAUSE_MS) minimum_pause_ms=$value ;;
@@ -65,27 +68,26 @@ read_config()
validate
}
print_config()
{
printf 'MINIMUM_ANCHOR_AGE_MS=%s\nMINIMUM_PAUSE_MS=%s\nMINIMUM_TAP_MS=%s\nMAXIMUM_TAP_MS=%s\nOUTPUT_EVENT=%s\n' \
"$minimum_anchor_age_ms" "$minimum_pause_ms" "$minimum_tap_ms" "$maximum_tap_ms" \
"$output_event"
}
write_config()
{
mkdir -p "$(dirname -- "$config_file")"
local temporary
temporary=$(mktemp "${config_file}.XXXXXX")
trap 'rm -f -- "$temporary"' RETURN
printf 'MINIMUM_ANCHOR_AGE_MS=%s\nMINIMUM_PAUSE_MS=%s\nMINIMUM_TAP_MS=%s\nMAXIMUM_TAP_MS=%s\nOUTPUT_EVENT=%s\n' \
"$minimum_anchor_age_ms" "$minimum_pause_ms" "$minimum_tap_ms" "$maximum_tap_ms" \
"$output_event" > "$temporary"
chmod 0644 "$temporary"
mv -f -- "$temporary" "$config_file"
trap - RETURN
temporary_config=$(mktemp "${config_file}.XXXXXX")
print_config > "$temporary_config"
chmod 0644 "$temporary_config"
}
write_override()
{
[[ -r $template_file ]] || die "installed plugin was not found"
mkdir -p "$(dirname -- "$override_file")"
local temporary
temporary=$(mktemp "${override_file}.XXXXXX")
trap 'rm -f -- "$temporary"' RETURN
temporary_override=$(mktemp "${override_file}.XXXXXX")
awk -v age="$minimum_anchor_age_ms" -v pause="$minimum_pause_ms" \
-v mintap="$minimum_tap_ms" \
-v maxtap="$maximum_tap_ms" \
@@ -103,10 +105,8 @@ write_override()
}
{ print }
END { if (!replaced) exit 1 }
' "$template_file" > "$temporary" || die "installed plugin has an unsupported format"
chmod 0644 "$temporary"
mv -f -- "$temporary" "$override_file"
trap - RETURN
' "$template_file" > "$temporary_override" || die "installed plugin has an unsupported format"
chmod 0644 "$temporary_override"
}
usage()
@@ -125,9 +125,7 @@ case $command in
show)
[[ $# -eq 1 ]] || die "show takes no arguments"
read_config
printf 'MINIMUM_ANCHOR_AGE_MS=%s\nMINIMUM_PAUSE_MS=%s\nMINIMUM_TAP_MS=%s\nMAXIMUM_TAP_MS=%s\nOUTPUT_EVENT=%s\n' \
"$minimum_anchor_age_ms" "$minimum_pause_ms" "$minimum_tap_ms" "$maximum_tap_ms" \
"$output_event"
print_config
;;
set)
shift
@@ -166,6 +164,9 @@ case $command in
validate
write_config
write_override
# Stage both files before replacing either: a bad template must not save settings.
mv -f -- "$temporary_config" "$config_file"
mv -f -- "$temporary_override" "$override_file"
;;
reset)
[[ $# -eq 1 ]] || die "reset takes no arguments"
@@ -178,6 +179,7 @@ case $command in
if [[ -e $config_file ]]; then
read_config
write_override
mv -f -- "$temporary_override" "$override_file"
else
rm -f -- "$override_file"
fi