#!/usr/bin/env bash

# As best I can tell, zsh doesn't have the ability to export functions so I created this script instead
# This is only used by the file /shells/zsh/includes/fzf.zsh

preview="$1"
RED='\033[0;31m'
YELLOW='\033[0;33m'
GREEN='\033[0;32m'
NC='\033[0m'

# prints dir git info
gitInfo(){
	local dir="$1"
	cd "$dir"
	local repoTopLevel="$(command git rev-parse --show-toplevel 2> /dev/null)"
	local branch="$(git branch --show-current 2> /dev/null)"
	if [ -n "$branch" ]; then
		local tag="$(git describe --tags --exact-match HEAD 2> /dev/null)"
		local ret=""
		[ -n "$branch" ] && ret=" $branch "
		[ -n "$tag" ] && ret+=" $tag "
		[ -n "$ret" ] || ret="$(git rev-parse --short HEAD 2> /dev/null)"
		local repoTopLevel="$(command git rev-parse --show-toplevel 2> /dev/null)"
		local untrackedFiles=$(command git ls-files --others --exclude-standard "${repoTopLevel}" 2> /dev/null)
		local modified=$(command git diff --name-only 2> /dev/null)
		local staged=$(command git diff --staged --name-only 2> /dev/null)
		if [ -n "$untrackedFiles" ]; then
			ret+=" "
		fi
		if [ -n "$modified" ]; then
			ret+=" "
		fi
		if [ -n "$staged" ]; then
			ret+=" "
		fi
		echo -e "$ret"
	fi
}

directoryInfo(){
	local dir="$1"
	local git="$(gitInfo "$dir")"
	local size="Size: $(du -hs "$dir" | cut -f 1)"
	echo -e "$GREEN$git $YELLOW$size $NC" | sed -e 's/^[[:space:]]*//'
}

if [ -d "$preview" ]; then
	directoryInfo "$preview"
	ls -lah --color "$preview" | sed '/^total/d'
else
	bat --style=numbers --color=always "$preview"
fi