aboutsummaryrefslogtreecommitdiffstats
path: root/tmux/vcs_info.sh
blob: 88c9e92a8aa31e6abe1967c223749ccc1595afcd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env bash

# source common.sh
SEPARATOR_RIGHT_BOLD=""
# SEPARATOR_RIGHT_THIN=""

# MIN_MAJOR_VERSION="2"
# MIN_MINOR_VERSION="1"
# TMUX_VERSION="$(tmux -V)"

get_tmux_cwd() {
  tmux display -p -F "#{pane_current_path}"
}
tmux_path=$(get_tmux_cwd)
# cd "$tmux_path" && IFS='/' read -ra tmux_path_array <<<"$tmux_path"
# pos=$((${#tmux_path_array[*]} - 1))
# last=${tmux_path_array[$pos]}
# for i in "${tmux_path_array[@]}"; do
#   if [[ $i == "$last" ]]; then
#     shortened_path+=$i
#   else
#     shortened_path+=${i:0:1}/
#   fi
# done

cd "${tmux_path}"
function gitadditions {
  if cd "${tmux_path}" && git rev-parse --git-dir >/dev/null 2>&1; then
    insertions=$(git --no-pager diff --numstat | awk '{sum1+=$1}END{print sum1}')
    echo +"$insertions"
  fi
}

function gitdeletions {
  if cd "${tmux_path}" && git rev-parse --git-dir >/dev/null 2>&1; then
    deletions=$(git --no-pager diff --numstat | awk '{sum2+=$2}END{print sum2}')
    echo -"$deletions"
  fi
}

function git_untracked_info {
  if cd "${tmux_path}" && git rev-parse --git-dir >/dev/null 2>&1; then
    untracked=$(git ls-files --others --exclude-standard | wc -w)
    echo "$untracked"
  fi
}

function git_branch_info {
  if cd "${tmux_path}" && git rev-parse --git-dir >/dev/null 2>&1; then
    branch=$(git rev-parse --abbrev-ref HEAD)
    echo " $branch"
  fi
}

function repo_info {
  if cd "${tmux_path}" && git rev-parse --git-dir >/dev/null 2>&1; then
    insertions=$(git --no-pager diff --numstat | awk '{sum1+=$1}END{print sum1}')
    if git remote -v | grep github >/dev/null 2>&1; then
      echo      else
      echo     fi
  else
    :
  fi
}

function get_eth_price {
  PRICE_TIME_CACHE=60
  PRICE_CACHE_OUTPUT_ETH=/tmp/tmux_PRICE_CACHE_ETH
  PRICE_CACHE_OUTPUT_XMR=/tmp/tmux_PRICE_CACHE_XMR
  PRICE_CACHE_OUTPUT_CAKE=/tmp/tmux_PRICE_CACHE_CAKE
  # eth_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price")
  # cake_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price")
  # monero_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price")
  if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_ETH) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
    :
  else
    if ETH_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price"); then
      if [ -n "${ETH_OUTPUT}" ]; then
        echo "${ETH_OUTPUT}" >${PRICE_CACHE_OUTPUT_ETH}
      fi
    fi
  fi
  if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_CAKE) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
    :
  else
    if CAKE_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price"); then
      if [ -n "${CAKE_OUTPUT}" ]; then
        echo "${CAKE_OUTPUT}" >${PRICE_CACHE_OUTPUT_CAKE}
      fi
    fi
  fi
  if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_XMR) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
    :
  else
    if XMR_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price"); then
      if [ -n "${XMR_OUTPUT}" ]; then
        echo "${XMR_OUTPUT}" >${PRICE_CACHE_OUTPUT_XMR}
      fi
    fi
  fi

  result="$(cat ${PRICE_CACHE_OUTPUT_ETH})"/"$(cat ${PRICE_CACHE_OUTPUT_CAKE})"/"$(cat ${PRICE_CACHE_OUTPUT_XMR})"
  echo "${result}"
}

tmux_session_info=" #S:#I.#P"
branch_info="#[fg=colour16]$(repo_info)#[fg=colour0 bg=colour39]"$(git_branch_info)
untracked_info="#[fg=colour255 bg=colour244]"$(git_untracked_info)
deletions_info="#[fg=colour255 bg=colour1]"$(gitdeletions)
additions_info="#[fg=colour255 bg=colour22]"$(gitadditions)
eth_price="#[fg=colour16 bg=colour37]"$(get_eth_price)

echo "#[fg=colour255 bg=colour26]$tmux_session_info #[fg=colour26 bg=colour39]$SEPARATOR_RIGHT_BOLD \
$branch_info #[fg=colour39 bg=colour22]$SEPARATOR_RIGHT_BOLD \
$additions_info #[fg=colour22 bg=colour1]$SEPARATOR_RIGHT_BOLD \
$deletions_info #[fg=colour1 bg=colour244]$SEPARATOR_RIGHT_BOLD \
$untracked_info #[fg=colour244 bg=colour37]$SEPARATOR_RIGHT_BOLD \
$eth_price #[fg=colour37 bg=colour16]$SEPARATOR_RIGHT_BOLD"