diff --git a/lib/helpers.bash b/lib/helpers.bash index 1bcf7844..0405eede 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -5,6 +5,15 @@ BASH_IT_LOAD_PRIORITY_DEFAULT_PLUGIN=${BASH_IT_LOAD_PRIORITY_DEFAULT_PLUGIN:-250 BASH_IT_LOAD_PRIORITY_DEFAULT_COMPLETION=${BASH_IT_LOAD_PRIORITY_DEFAULT_COMPLETION:-350} BASH_IT_LOAD_PRIORITY_SEPARATOR="---" +function _command_exists () +{ + _about 'checks for existence of a command' + _param '1: command to check' + _example '$ _command_exists ls && echo exists' + _group 'lib' + type "$1" &> /dev/null ; +} + # Helper function loading various enable-able files function _load_bash_it_files() { subdirectory="$1" diff --git a/plugins/available/battery.plugin.bash b/plugins/available/battery.plugin.bash index dd941372..0391ca10 100644 --- a/plugins/available/battery.plugin.bash +++ b/plugins/available/battery.plugin.bash @@ -2,23 +2,23 @@ cite about-plugin about-plugin 'display info about your battery charge level' ac_adapter_connected(){ - if command_exists upower; + if _command_exists upower; then upower -i $(upower -e | grep BAT) | grep 'state' | grep -q 'charging\|fully-charged' return $? - elif command_exists acpi; + elif _command_exists acpi; then acpi -a | grep -q "on-line" return $? - elif command_exists pmset; + elif _command_exists pmset; then pmset -g batt | grep -q 'AC Power' return $? - elif command_exists ioreg; + elif _command_exists ioreg; then ioreg -n AppleSmartBattery -r | grep -q '"ExternalConnected" = Yes' return $? - elif command_exists WMIC; + elif _command_exists WMIC; then WMIC Path Win32_Battery Get BatteryStatus /Format:List | grep -q 'BatteryStatus=2' return $? @@ -26,23 +26,23 @@ ac_adapter_connected(){ } ac_adapter_disconnected(){ - if command_exists upower; + if _command_exists upower; then upower -i $(upower -e | grep BAT) | grep 'state' | grep -q 'discharging' return $? - elif command_exists acpi; + elif _command_exists acpi; then acpi -a | grep -q "off-line" return $? - elif command_exists pmset; + elif _command_exists pmset; then pmset -g batt | grep -q 'Battery Power' return $? - elif command_exists ioreg; + elif _command_exists ioreg; then ioreg -n AppleSmartBattery -r | grep -q '"ExternalConnected" = No' return $? - elif command_exists WMIC; + elif _command_exists WMIC; then WMIC Path Win32_Battery Get BatteryStatus /Format:List | grep -q 'BatteryStatus=1' return $? @@ -52,12 +52,12 @@ ac_adapter_disconnected(){ battery_percentage(){ about 'displays battery charge as a percentage of full (100%)' group 'battery' - - if command_exists upower; + + if _command_exists upower; then local UPOWER_OUTPUT=$(upower --show-info $(upower --enumerate | grep BAT) | grep percentage | tail --bytes 5) echo ${UPOWER_OUTPUT: : -1} - elif command_exists acpi; + elif _command_exists acpi; then local ACPI_OUTPUT=$(acpi -b) case $ACPI_OUTPUT in @@ -72,7 +72,7 @@ battery_percentage(){ ;; esac ;; - + *" Charging"* | *" Discharging"*) local PERC_OUTPUT=$(echo $ACPI_OUTPUT | awk -F, '/,/{gsub(/ /, "", $0); gsub(/%/,"", $0); print $2}' ) echo ${PERC_OUTPUT} @@ -84,7 +84,7 @@ battery_percentage(){ echo '-1' ;; esac - elif command_exists pmset; + elif _command_exists pmset; then local PMSET_OUTPUT=$(pmset -g ps | sed -n 's/.*[[:blank:]]+*\(.*%\).*/\1/p') case $PMSET_OUTPUT in @@ -95,7 +95,7 @@ battery_percentage(){ echo $PMSET_OUTPUT | head -c 2 ;; esac - elif command_exists ioreg; + elif _command_exists ioreg; then local IOREG_OUTPUT=$(ioreg -n AppleSmartBattery -r | awk '$1~/Capacity/{c[$1]=$3} END{OFMT="%05.2f%%"; max=c["\"MaxCapacity\""]; print (max>0? 100*c["\"CurrentCapacity\""]/max: "?")}') case $IOREG_OUTPUT in @@ -106,7 +106,7 @@ battery_percentage(){ echo $IOREG_OUTPUT | head -c 2 ;; esac - elif command_exists WMIC; + elif _command_exists WMIC; then local WINPC=$(echo porcent=$(WMIC PATH Win32_Battery Get EstimatedChargeRemaining /Format:List) | grep -o '[0-9]*') case $WINPC in @@ -125,7 +125,7 @@ battery_percentage(){ battery_charge(){ about 'graphical display of your battery charge' group 'battery' - + # Full char local F_C='▸' # Depleted char @@ -136,7 +136,7 @@ battery_charge(){ local DANGER_COLOR="${red}" local BATTERY_OUTPUT="${DEPLETED_COLOR}${D_C}${D_C}${D_C}${D_C}${D_C}" local BATTERY_PERC=$(battery_percentage) - + case $BATTERY_PERC in no) echo "" diff --git a/test/lib/helpers.bats b/test/lib/helpers.bats index 99cd2501..7398e08a 100644 --- a/test/lib/helpers.bats +++ b/test/lib/helpers.bats @@ -30,6 +30,26 @@ function local_setup { # TODO Create global __get_base_name function # TODO Create global __get_enabled_name function +@test "helpers: _command_exists function exists" { + type -a _command_exists &> /dev/null + assert_success +} + +@test "helpers: _command_exists function positive test ls" { + run _command_exists ls + assert_success +} + +@test "helpers: _command_exists function positive test bash-it" { + run _command_exists bash-it + assert_success +} + +@test "helpers: _command_exists function negative test" { + run _command_exists __addfkds_dfdsjdf + assert_failure +} + @test "helpers: bash-it help aliases ag" { run bash-it help aliases "ag" assert_line "0" "ag='ag --smart-case --pager=\"less -MIRFX'" diff --git a/test/themes/base.theme.bats b/test/themes/base.theme.bats index 6bf7efed..ab320c81 100644 --- a/test/themes/base.theme.bats +++ b/test/themes/base.theme.bats @@ -2,7 +2,10 @@ load ../test_helper load ../../lib/composure -load ../../plugins/available/base.plugin + +cite _about _param _example _group _author _version + +load ../../lib/helpers load ../../themes/base.theme @test 'themes base: battery_percentage should not exist' { diff --git a/themes/atomic/atomic.theme.bash b/themes/atomic/atomic.theme.bash index 6dd7ea04..a89aeea3 100644 --- a/themes/atomic/atomic.theme.bash +++ b/themes/atomic/atomic.theme.bash @@ -164,7 +164,7 @@ ___atomic_prompt_clock() { } ___atomic_prompt_battery() { - ! command_exists battery_percentage || + ! _command_exists battery_percentage || [ "${THEME_SHOW_BATTERY}" != "true" ] || [ "$(battery_percentage)" = "no" ] && return diff --git a/themes/base.theme.bash b/themes/base.theme.bash index 58e2d288..66ce7de9 100644 --- a/themes/base.theme.bash +++ b/themes/base.theme.bash @@ -474,7 +474,7 @@ function battery_char { fi } -if ! command_exists battery_charge ; then +if ! _command_exists battery_charge ; then # if user has installed battery plugin, skip this... function battery_charge (){ # no op @@ -484,7 +484,7 @@ fi # The battery_char function depends on the presence of the battery_percentage function. # If battery_percentage is not defined, then define battery_char as a no-op. -if ! command_exists battery_percentage ; then +if ! _command_exists battery_percentage ; then function battery_char (){ # no op echo -n diff --git a/themes/brainy/brainy.theme.bash b/themes/brainy/brainy.theme.bash index 54d29f8b..c3aa9b83 100644 --- a/themes/brainy/brainy.theme.bash +++ b/themes/brainy/brainy.theme.bash @@ -152,7 +152,7 @@ ___brainy_prompt_clock() { } ___brainy_prompt_battery() { - ! command_exists battery_percentage || + ! _command_exists battery_percentage || [ "${THEME_SHOW_BATTERY}" != "true" ] || [ "$(battery_percentage)" = "no" ] && return diff --git a/themes/demula/demula.theme.bash b/themes/demula/demula.theme.bash index e698def5..515d096d 100644 --- a/themes/demula/demula.theme.bash +++ b/themes/demula/demula.theme.bash @@ -84,7 +84,7 @@ ${D_BRANCH_COLOR}%b %r ${D_CHANGES_COLOR}%m%u ${D_DEFAULT_COLOR}" # checks if the plugin is installed before calling battery_charge safe_battery_charge() { - if command_exists battery_charge ; + if _command_exists battery_charge ; then battery_charge fi diff --git a/themes/powerline/powerline.base.bash b/themes/powerline/powerline.base.bash index f65e9dd6..6646814a 100644 --- a/themes/powerline/powerline.base.bash +++ b/themes/powerline/powerline.base.bash @@ -43,9 +43,9 @@ function __powerline_user_info_prompt { function __powerline_ruby_prompt { local ruby_version="" - if command_exists rvm; then + if _command_exists rvm; then ruby_version="$(rvm_version_prompt)" - elif command_exists rbenv; then + elif _command_exists rbenv; then ruby_version=$(rbenv_version_prompt) fi diff --git a/themes/rana/rana.theme.bash b/themes/rana/rana.theme.bash index 0aed8348..25530397 100644 --- a/themes/rana/rana.theme.bash +++ b/themes/rana/rana.theme.bash @@ -117,7 +117,7 @@ ${D_BRANCH_COLOR}%b %r ${D_CHANGES_COLOR}%m%u ${D_DEFAULT_COLOR}" # checks if the plugin is installed before calling battery_charge safe_battery_charge() { - if command_exists battery_charge ; + if _command_exists battery_charge ; then battery_charge fi