dotfiles/bin/git-st

36 lines
779 B
Bash
Executable file

#!/usr/bin/env bash
if git branchless query HEAD >/dev/null 2>&1; then
printf '\n ● \e[1m'
git branchless query HEAD
printf '\e[2;38;5;242m%*s\e[0m\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' '-'
fi
awk -vOFS='' '
NR==FNR {
all[i++] = $0;
difffiles[$1] = $0;
next;
}
! ($2 in difffiles) {
print; next;
}
{
gsub($2, difffiles[$2]);
print;
}
END {
if (NR != FNR) {
# Had diff output
exit;
}
# Had no diff output, just print lines from git status -sb
for (i in all) {
print all[i];
}
}
' \
<(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') \
<(git -c color.status=always status -sb)
printf '\n'