From 11cf52e70102c70e9e0c140948f2055830a6985a Mon Sep 17 00:00:00 2001 From: Kaspar Vollenweider Date: Sun, 16 Oct 2022 16:19:47 +0200 Subject: [PATCH] feat(is_os): functions to test for major OS All over oh-my-zsh I found plenty of functions and plugins testing for the current OS or Platform. For this PR I basically made simple is_[OS] functions that can be used anywhere in plugins or oh-my-zsh code, instead of repeating these over and over again. I basically need such tests often, because my personal custom oh my zsh additions run on macOS with Intel and M1 chips plus on different linux's. Functions: - is_linux - the CPUTYPE env is linux* - is_android - the CPUTYPE env is linux-android* - is_netbsd the CPUTYPE env is netbsd* - is_openbsd - the CPUTYPE env is openbsd* - is_freebsd - the CPUTYPE env is freebsd* - is_mac - the CPUTYPE env is darwin* - is_mac_arm - it is darwin and has CPUTYPE arm64 - is_mac_intel - it is darwin and has CPUTYPE x86_64 - is_bsd - any BSD like OS - the CPUTYPE env is (darwin|freebsd|openbsd|netbsd)* - is_solaris - the CPUTYPE env is solaris* - is_cygwin - the CPUTYPE env is cygwin* - is_msys - the CPUTYPE env is msys* - is_windows - the CPUTYPE env is (cygwin|msys)* --- lib/functions.zsh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/functions.zsh b/lib/functions.zsh index dfcc4d961..37fc1baa4 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -253,3 +253,30 @@ function omz_urldecode { echo -E "$decoded" } + +# The OS is linux +function is_linux { [[ "$OSTYPE" == linux* ]]; } +# The OS is Android +function is_android { [[ "$OSTYPE" == linux-android* ]]; } +# The OS is NetBSD +function is_netbsd() { [[ "$OSTYPE" == netbsd* ]]; } +# The OS is OpenBSD +function is_openbsd() { [[ "$OSTYPE" == openbsd* ]]; } +# The OS is FreeBSD +function is_freebsd() { [[ "$OSTYPE" == freebsd* ]]; } +# The OS is macOS (darwin) +function is_mac() { [[ "$OSTYPE" == darwin* ]]; } +# The OS is macOS (darwin) running on series of ARM-based systems-on-a-chip designed by Apple Inc +function is_mac_arm() { is_mac && [[ "$CPUTYPE" == arm64 ]]; } +# The OS is macOS (darwin) running on series of Intel (amd64 / x86_64) CPU +function is_mac_intel() { is_mac && [[ "$CPUTYPE" == x86_64 ]]; } +# The OS is a BSD derivate +function is_bsd() { [[ "$OSTYPE" == (darwin|freebsd|openbsd|netbsd|dragonfly)* ]]; } +# The OS is Solaris +function is_solaris { [[ "$OSTYPE" == solaris* ]]; } +# The Platform is Cygwin (Windows) +function is_cygwin { [[ "$OSTYPE" == cygwin* ]]; } +# The platform is MinGW (Windows) +function is_msys { [[ "$OSTYPE" == msys* ]]; } +# The OS is Windows +function is_windows { [[ "$OSTYPE" == (cygwin|msys)* ]]; }