You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
968 B
44 lines
968 B
#!/bin/sh |
|
# Came from here: https://raw.githubusercontent.com/PlatyPew/dotfiles/master/configs/git/git-st |
|
IFS= |
|
status="$(git -c color.status=always status -sb)" |
|
if [ $? -ne 0 ] |
|
then |
|
exit 1 |
|
fi |
|
|
|
diff="$(git diff --color --stat HEAD 2> /dev/null | sed '$d; s/^ //' | cut -d '|' -f 2)" |
|
|
|
IFS=$'\n' status=($status) |
|
IFS=$'\n' diff=($diff) |
|
|
|
len=-1 |
|
for i in $(seq 1 $(( ${#status[@]} - 1))) |
|
do |
|
if [ ${#status[i]} -gt $len ] |
|
then |
|
len=${#status[i]} |
|
fi |
|
done |
|
(( len *= -1 )) |
|
|
|
for i in $(seq 0 $(( ${#status[@]} - 1))) |
|
do |
|
currStatus=${status[i]} |
|
if [ $i -eq 0 ] |
|
then |
|
echo "${status[0]}" | cut -d ' ' -f 2- |
|
else |
|
if [ ! -z ${diff[i - 1]} ] |
|
then |
|
currDiff="|${diff[i - 1]}" |
|
else |
|
currDiff="" |
|
fi |
|
printf "%*s %s\n" $len "${currStatus}" "${currDiff}" |
|
fi |
|
done |
|
if [ $(( ${#status[@]} - 1)) -eq 0 ] |
|
then |
|
printf "\033[93mNothing to commit, working tree clean\033[0m\n" |
|
fi
|
|
|