aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Ritter <dritter03@googlemail.com>2019-01-23 21:10:46 +0300
committerDominik Ritter <dritter03@googlemail.com>2019-01-23 21:10:46 +0300
commit747b94b1b6b8450375a2b1619d8a5c7336be1852 (patch)
tree164feac2dadb6e42735873b76b2c2d079caa2814
parentbde4337992e01738e72ef589c321299193580838 (diff)
Match VPN interface fuzzy on Linux
-rwxr-xr-xpowerlevel9k.zsh-theme11
-rwxr-xr-xtest/segments/public_ip.spec9
2 files changed, 18 insertions, 2 deletions
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index 081562b5..3db36050 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -620,8 +620,15 @@ prompt_public_ip() {
fi
done
else
- local interface=$(${ROOT_PREFIX}/sbin/ip -brief -4 a show "${POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE}")
- [[ -n "$interface" ]] && icon='VPN_ICON'
+ local -a interfaces
+ interfaces=( "${(f)$(${ROOT_PREFIX}/sbin/ip -brief -4 a show)}" )
+ local pattern="^${POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE}[ ]+UP[ ]+"
+ for interface in "${(@)interfaces}"; do
+ if [[ "$interface" =~ $pattern ]]; then
+ icon='VPN_ICON'
+ break
+ fi
+ done
fi
fi
$1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" "$icon"
diff --git a/test/segments/public_ip.spec b/test/segments/public_ip.spec
index 39b0243c..5ae62321 100755
--- a/test/segments/public_ip.spec
+++ b/test/segments/public_ip.spec
@@ -113,6 +113,15 @@ function fakeIp() {
INNER
fi
+ if [[ "\$*" =~ '-brief.*show' ]]; then
+ cat <<INNER
+lo UNKNOWN 127.0.0.1/8
+${INTERFACE1} UP 1.2.3.4/24
+${INTERFACE2} UP 5.4.3.2/16
+docker0 DOWN 172.17.0.1/16
+INNER
+ fi
+
if [[ "\$*" =~ 'show ${INTERFACE1}' ]]; then
cat <<INNER
3: ${INTERFACE1}: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000