#!/usr/bin/env sh # Description: Show file stats similar to nnn show_stats() output in a pager # Dependencies: file, stat, pager (PAGER/NNN_PAGER/less) # Shell: POSIX compliant entry=${1:-} dir=${2:-} if [ -z "$entry" ]; then printf '%s\n' "No hovered entry provided." >&2 exit 1 fi case "$entry" in /*) target=$entry ;; *) if [ -n "$dir" ]; then target=$dir/$entry else target=$PWD/$entry fi ;; esac os=$(uname -s 2>/dev/null || printf '%s' unknown) # Match nnn FILE_MIME_OPTS handling. file_mime_opts='' case "$os" in Darwin) file_mime_opts='-bIL' ;; SunOS) file_mime_opts='' ;; *) file_mime_opts='-biL' ;; esac # Match nnn stat behavior. stat_x=0 case "$os" in FreeBSD|OpenBSD|NetBSD|Darwin|DragonFly) stat_x=1 ;; esac tmpfile=$(mktemp "${TMPDIR:-/tmp}/nnn-stats.XXXXXX") || exit 1 trap 'rm -f "$tmpfile"' EXIT HUP INT TERM { if [ "$stat_x" -eq 1 ]; then stat -x "$target" else stat "$target" fi file -b "$target" if [ -n "$file_mime_opts" ]; then file "$file_mime_opts" "$target" fi } >"$tmpfile" 2>&1 pager_cmd=${NNN_PAGER:-${PAGER:-less}} # Allow pager command with options (e.g. "less -R"). # shellcheck disable=SC2086 $pager_cmd "$tmpfile" || cat "$tmpfile"