mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2024-11-10 02:39:40 +00:00
63 lines
2 KiB
Bash
Executable file
63 lines
2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
text_handle() {
|
|
# Handle all other formats as text and cat them
|
|
# if highlighting tools are aviable, try to use them
|
|
if command -v bat > /dev/null; then
|
|
bat -pp --color=always "$1"
|
|
elif command -v highlight > /dev/null; then
|
|
highlight "$1" --out-format ansi --force
|
|
else
|
|
cat "$1"
|
|
fi
|
|
}
|
|
|
|
run_cmd() {
|
|
cmd="$1"
|
|
shift
|
|
|
|
if command -v "$cmd" > /dev/null; then
|
|
$cmd $@
|
|
else
|
|
# If we didn't found the requested command, check if
|
|
# the file is text-like and try to use the text_handle
|
|
# to show the preview, this may not be ideal for given
|
|
# file-format, but at least we won't fail.
|
|
case $(file --mime-type "$file" -bL) in
|
|
text/*|application/json)
|
|
echo "@@PREVIEW FALLBACK: Using text handle, $cmd command not found!"
|
|
text_handle "$file"
|
|
;;
|
|
*)
|
|
echo "@@PREVIEW ERROR: Preview failed, $cmd command not found!"
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# Capture all directories at first, since they could
|
|
# potentionally match one of the file case statements
|
|
if [ -d "$1" ]; then
|
|
tree "$1" -La 1
|
|
elif [ -f "$1" ]; then
|
|
case "$1" in
|
|
*.png|*.jpg|*.jpeg|*.mkv|*.mp4|*.m4v) run_cmd mediainfo "$1";;
|
|
*.pdf) run_cmd pdftotext "$1";;
|
|
*.tgz|*.tar.gz) run_cmd tar tzf "$1";;
|
|
*.tar.bz2|*.tbz2) run_cmd tar tjf "$1";;
|
|
*.tar.txz|*.txz) run_cmd xz --list "$1";;
|
|
*.tar) run_cmd tar tf "$1";;
|
|
*.zip|*.jar|*.war|*.ear|*.oxt) run_cmd unzip -l "$1";;
|
|
*.rar) run_cmd unrar l "$1";;
|
|
*.7z) run_cmd 7z l "$1";;
|
|
*.iso) run_cmd iso-info --no-header -l "$1";;
|
|
*.o) run_cmd nm "$1" | less ;;
|
|
*.csv) cat "$1" | sed s/,/\\n/g ;;
|
|
*odt,*.ods,*.odp,*.sxw) run_cmd odt2txt "$1";;
|
|
*.doc) run_cmd catdoc "$1" ;;
|
|
*.docx) run_cmd docx2txt "$1" - ;;
|
|
*.torrent) run_cmd transmission-show "$1";;
|
|
*) text_handle "$1" ;;
|
|
esac
|
|
fi
|