init.zsh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #
  2. # Defines helper functions.
  3. #
  4. # Authors:
  5. # Sorin Ionescu <sorin.ionescu@gmail.com>
  6. #
  7. # Checks if a file can be autoloaded by trying to load it in a subshell.
  8. function is-autoloadable {
  9. ( unfunction $1 ; autoload -U +X $1 ) &> /dev/null
  10. }
  11. # Checks if a name is a command, function, or alias.
  12. function is-callable {
  13. (( $+commands[$1] || $+functions[$1] || $+aliases[$1] || $+builtins[$1] ))
  14. }
  15. # Checks a boolean variable for "true".
  16. # Case insensitive: "1", "y", "yes", "t", "true", "o", and "on".
  17. function is-true {
  18. [[ -n "$1" && "$1" == (1|[Yy]([Ee][Ss]|)|[Tt]([Rr][Uu][Ee]|)|[Oo]([Nn]|)) ]]
  19. }
  20. # Prints the first non-empty string in the arguments array.
  21. function coalesce {
  22. for arg in $argv; do
  23. print "$arg"
  24. return 0
  25. done
  26. return 1
  27. }
  28. # Checks if running on macOS Darwin.
  29. function is-darwin {
  30. [[ "$OSTYPE" == darwin* ]]
  31. }
  32. # Checks if running on Linux.
  33. function is-linux {
  34. [[ "$OSTYPE" == linux* ]]
  35. }
  36. # Checks if running on BSD.
  37. function is-bsd {
  38. [[ "$OSTYPE" == *bsd* ]]
  39. }
  40. # Checks if running on Cygwin (Windows).
  41. function is-cygwin {
  42. [[ "$OSTYPE" == cygwin* ]]
  43. }
  44. # Checks if running on termux (Android).
  45. function is-termux {
  46. [[ "$OSTYPE" == linux-android ]]
  47. }