diff --git a/functions/__kitty_logging_dir.fish b/functions/__kitty_logging_dir.fish new file mode 100644 index 0000000..adc6b5b --- /dev/null +++ b/functions/__kitty_logging_dir.fish @@ -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 diff --git a/functions/__kitty_logging_has_watcher.fish b/functions/__kitty_logging_has_watcher.fish new file mode 100644 index 0000000..7c4d00f --- /dev/null +++ b/functions/__kitty_logging_has_watcher.fish @@ -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 diff --git a/functions/__kitty_logging_version.fish b/functions/__kitty_logging_version.fish new file mode 100644 index 0000000..1911d9e --- /dev/null +++ b/functions/__kitty_logging_version.fish @@ -0,0 +1,30 @@ +# Copyright (C) 2026 Rootiest +# SPDX-License-Identifier: AGPL-3.0-or-later + +# SYNOPSIS +# __kitty_logging_version +# +# 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