#!/bin/sh
# Preview files & dirs
file="$1"

# Helps with fzf_nav visualization
rfile() {
    file "$1" | sed 's/,\s/\n/g'
}

# If executable, run 'file' and exit
file "$file" | grep -q "executable" && rfile "$file" && exit

# If directory, list contents
[ -d "$file" ] && (cd "$file" && /usr/bin/ls -A1Fx --color --group-directories-first) && exit

case $file in
    # Images
    *.jpeg) rfile "$file" ;;
    *.png) rfile "$file" ;;
    *.jpg) rfile "$file" ;;
    *.gif) rfile "$file" ;;
    *.svg) rfile "$file" ;;
    # Videos
    *.webm) rfile "$file" ;;
    *.mp4) rfile "$file" ;;
    *.flv) rfile "$file" ;;
    *.mkv) rfile "$file" ;;
    *.avi) rfile "$file" ;;
    *.m4v) rfile "$file" ;;
    # Audio
    *.flac) rfile "$file" ;;
    *.mp3) rfile "$file" ;;
    *.ogg) rfile "$file" ;;
    # Documents
    *.pdf) pdftotext "$file" - || file "$file" ;;
    *.csv) column -s, -t < "$file" || cat "$file" ;;
    # Other
    *.html) links -dump "$file" || cat "$file" ;;
    *) ! [ -d "$file" ] && head -n 47 "$file" && printf "\n\n  ..." ;;
esac