mirror of
https://github.com/tumillanino/miasma-os.git
synced 2026-04-11 07:15:31 +00:00
52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
GIT_BRANCH_COLOR=$'\033[38;2;137;180;250m'
|
|
GIT_BRANCH_RESET=$'\033[0m'
|
|
GIT_BRANCH_ICON=""
|
|
GIT_TAG_ICON=""
|
|
|
|
format_sessions_with_git_branch() {
|
|
local sessions="$1"
|
|
local -a session_list=()
|
|
local -a ref_list=()
|
|
local -a icon_list=()
|
|
local max_len=0
|
|
|
|
while IFS= read -r session; do
|
|
[[ -z "$session" ]] && continue
|
|
session_list+=("$session")
|
|
local pane_path
|
|
pane_path=$(tmux list-panes -t "$session" -F '#{pane_current_path}' 2>/dev/null | head -1)
|
|
local ref=""
|
|
local icon="$GIT_BRANCH_ICON"
|
|
if [[ -n "$pane_path" ]]; then
|
|
ref=$(git -C "$pane_path" branch --show-current 2>/dev/null)
|
|
if [[ -z "$ref" ]]; then
|
|
ref=$(git -C "$pane_path" describe --tags --exact-match 2>/dev/null)
|
|
[[ -n "$ref" ]] && icon="$GIT_TAG_ICON"
|
|
fi
|
|
fi
|
|
ref_list+=("$ref")
|
|
icon_list+=("$icon")
|
|
local len=${#session}
|
|
(( len > max_len )) && max_len=$len
|
|
done <<< "$sessions"
|
|
|
|
for ((j=0; j<${#session_list[@]}; j++)); do
|
|
local name="${session_list[$j]}"
|
|
local ref="${ref_list[$j]}"
|
|
local icon="${icon_list[$j]}"
|
|
if [[ -n "$ref" ]]; then
|
|
printf "%-${max_len}s ${GIT_BRANCH_COLOR}${icon} %s${GIT_BRANCH_RESET}\n" "$name" "$ref"
|
|
else
|
|
printf "%s\n" "$name"
|
|
fi
|
|
done
|
|
}
|
|
|
|
strip_git_branch_info() {
|
|
local ESC
|
|
ESC=$(printf '\033')
|
|
echo "$1" | sed "s/${ESC}\[[0-9;]*m//g" | sed "s/[[:space:]]* .*//" | sed 's/[[:space:]]*$//'
|
|
}
|