ce84db593c
Adds __fish_config_op_enabled helper (master __fish_config_opinionated evaluated first via __fish_variable_check, then the category variable) and gates C1-C4 components: CachyOS surgical override, PAGER/MANPAGER, CDPATH, Vi mode, exit override, bang-bang bindings, history/cp/mv/wget/ grep aliases, cd->z alias, Fisher bootstrap and theme apply, paru/yay wrapper generation, WakaTime hook, custom key chords, puffer, autopair, starship prompt, Catppuccin colors, FZF_DEFAULT_OPTS, done notifications, and Kitty/WezTerm window-management abbreviations.
52 lines
1.9 KiB
Fish
52 lines
1.9 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# Generates ~/.local/bin/paru on first run (and on version bump) when
|
|
# /usr/bin/paru is installed. The wrapper tees paru output to a
|
|
# timestamped log file and prunes old logs, mirroring smart_exit behavior.
|
|
|
|
# Auto-generating a wrapper in ~/.local/bin is opinionated (C2 auto-exec).
|
|
# Task #4's __fish_config_enable_logging will additionally gate this wrapper.
|
|
__fish_config_op_enabled __fish_config_op_autoexec; or return
|
|
|
|
set -l _paru_real /usr/bin/paru
|
|
set -l _paru_wrapper "$HOME/.local/bin/paru"
|
|
set -l _paru_wrapper_version 1
|
|
|
|
# Skip entirely if the real paru binary isn't present
|
|
test -x $_paru_real; or return
|
|
|
|
# Check if wrapper already exists at the expected version
|
|
if test -f $_paru_wrapper
|
|
and grep -q "# paru-wrapper-version: $_paru_wrapper_version" $_paru_wrapper 2>/dev/null
|
|
set --erase _paru_real _paru_wrapper _paru_wrapper_version
|
|
return
|
|
end
|
|
|
|
mkdir -p (dirname $_paru_wrapper)
|
|
|
|
printf '%s\n' \
|
|
'#!/usr/bin/env bash' \
|
|
"# paru-wrapper-version: $_paru_wrapper_version" \
|
|
'# Auto-generated by conf.d/paru-wrapper.fish — do not edit by hand.' \
|
|
'# Tees paru output to a timestamped log file and prunes old ones.' \
|
|
'set -o pipefail' \
|
|
'' \
|
|
'log_dir="${SCROLLBACK_HISTORY_DIR:-$HOME/.terminal_history}"' \
|
|
'mkdir -p "$log_dir"' \
|
|
'log_file="$log_dir/paru_$(date +%Y-%m-%d_%H-%M-%S).log"' \
|
|
'' \
|
|
'/usr/bin/paru "$@" 2>&1 | tee "$log_file"' \
|
|
'' \
|
|
'max_files="${SCROLLBACK_HISTORY_MAX_FILES:-100}"' \
|
|
'mapfile -t logs < <(ls -1t "$log_dir"/paru_*.log 2>/dev/null)' \
|
|
'excess=$(( ${#logs[@]} - max_files ))' \
|
|
'for (( i = ${#logs[@]} - 1; i >= ${#logs[@]} - excess && i >= 0; i-- )); do' \
|
|
' rm -f "${logs[$i]}"' \
|
|
'done' \
|
|
> $_paru_wrapper
|
|
|
|
chmod +x $_paru_wrapper
|
|
|
|
set --erase _paru_real _paru_wrapper _paru_wrapper_version
|