# 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