aboutsummaryrefslogtreecommitdiffstats
path: root/tmux/vcs_info.sh
blob: fadbc18f6cd84a9ea2f54918245be8b832df1816 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh

# 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

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

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

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

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

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

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" | cut -d. -f1); 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" | cut -d. -f1); 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})"
  result="$(cat ${PRICE_CACHE_OUTPUT_ETH})"/"$(cat ${PRICE_CACHE_OUTPUT_XMR})"
  echo "${result}"
}

user_service_status() {
  if sv status ~/service/* | grep -v -E "^run:" >/dev/null 2>&1; then
    echo DOWN
  else
    echo UP
  fi
}

tmux_session_info=" #S:#I.#P:#D"
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)
service_status_info="#[fg=colour16 bg=colour65, bold]"$(user_service_status)

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=colour65]$SEPARATOR_RIGHT_BOLD \
$service_status_info #[fg=colour65 bg=colour16]$SEPARATOR_RIGHT_BOLD"