feat(kitty): add kitty-logging resolver/inspection helpers

This commit is contained in:
2026-06-16 02:09:43 -04:00
parent c2ec031af2
commit ca0a35e8c7
3 changed files with 77 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
# SYNOPSIS
# __kitty_logging_dir
#
# DESCRIPTION
# Echoes the Kitty configuration directory, mirroring Kitty's own resolution
# order: $KITTY_CONFIG_DIRECTORY, else $XDG_CONFIG_HOME/kitty, else
# ~/.config/kitty.
#
# RETURNS
# 0 Always (path printed to stdout)
#
# EXAMPLE
# set -l dir (__kitty_logging_dir)
function __kitty_logging_dir --description 'Resolve the Kitty config directory'
if set -q KITTY_CONFIG_DIRECTORY; and test -n "$KITTY_CONFIG_DIRECTORY"
echo $KITTY_CONFIG_DIRECTORY
else if set -q XDG_CONFIG_HOME; and test -n "$XDG_CONFIG_HOME"
echo $XDG_CONFIG_HOME/kitty
else
echo $HOME/.config/kitty
end
end
@@ -0,0 +1,22 @@
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
# SYNOPSIS
# __kitty_logging_has_watcher
#
# DESCRIPTION
# Succeeds (returns 0) when the top-level kitty.conf contains an active
# (non-commented) `watcher` directive — whether the fish-config managed one or
# a user's own. Used to suppress the setup reminder and to inform status.
#
# RETURNS
# 0 An active watcher directive is present
# 1 None present, or kitty.conf does not exist
#
# EXAMPLE
# __kitty_logging_has_watcher; and echo "already wired"
function __kitty_logging_has_watcher --description 'True if kitty.conf has an active watcher directive'
set -l conf (__kitty_logging_dir)/kitty.conf
test -f $conf; or return 1
command grep -qE '^[[:space:]]*watcher[[:space:]]' $conf
end
+30
View File
@@ -0,0 +1,30 @@
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
# SYNOPSIS
# __kitty_logging_version <file>
#
# DESCRIPTION
# Prints the integer value of the "fish-config-watcher-version:" marker in the
# given watcher file, or 0 if the file is missing or has no marker.
#
# ARGUMENTS
# file Path to a watcher script
#
# RETURNS
# 0 Always (integer printed to stdout)
#
# EXAMPLE
# __kitty_logging_version ~/.config/kitty/fish-config-watcher.py
function __kitty_logging_version --argument-names file --description 'Read the watcher version marker (0 if absent)'
if not test -f "$file"
echo 0
return 0
end
set -l v (string match -gr 'fish-config-watcher-version: *([0-9]+)' <$file)
if set -q v[1]; and test -n "$v[1]"
echo $v[1]
else
echo 0
end
end