#!/bin/bash set -euo pipefail # sanity checking if [[ $# -ne 1 ]] ; then echo 'usage: v <file>' exit 0 fi if ! [ -f "$1" ]; then echo "file not found: '$1'" exit 1 fi # what should we pass for bat --file-name? fname="$1" fname="${fname%*.gz}" fname="${fname/.geojson/.json}" # go case "$1" in # json *.json | *.geojson) cat "$1" | jq . | bat --file-name "$fname" ;; *.json.gz | *.geojson.gz) gzcat "$1" | jq . | bat --file-name "$fname" ;; # tar *.tar) tar -tvf "$1" | bat --file-name "$fname" ;; *.tar.gz) tar -ztvf "$1" | bat --file-name "$fname" ;; # csv *.csv) cat "$1" | vd - -f csv ;; *.csv.gz) gzcat "$1" | vd - -f csv ;; *.xlsx) xlsx "$1" | vd - -f csv ;; # fallbacks *.gz) gzcat "$1" | bat --file-name "$fname" ;; *.zip) unzip -v "$1" | bat --file-name "$fname" ;; *) bat "$1" ;; esac