settled on whichable func over direct call to which
authorChris Koeritz <fred@gruntose.com>
Mon, 1 Jun 2020 21:02:20 +0000 (17:02 -0400)
committerChris Koeritz <fred@gruntose.com>
Mon, 1 Jun 2020 21:02:20 +0000 (17:02 -0400)
the whichable function does the which but also hides errors from not finding the command in question.  this is much preferred over seeing errors about "gvim not found" etc.

scripts/archival/compare_backup_drive.sh
scripts/archival/list_arch.sh
scripts/core/common.alias
scripts/core/functions.sh
scripts/core/variables.sh
scripts/customize/fred/java_profile.sh
scripts/rev_control/version_control.sh
scripts/system/list_packages.sh

index 501bfc9795ecc7feb1162ff3974fb9542c0e7921..4f36ceb4e03e656b64f1c845fef669e60de38382 100644 (file)
@@ -22,7 +22,7 @@ echo would do--    compare_dirs "$target/$(basename $currdir)" "$currdir"
 # decide which drive to compare.
 targets="$1"
 if [ -z "$targets" ]; then
-  targets=($($(which ls) -1 /media/$USER/*))
+  targets=($($(whichable ls) -1 /media/$USER/*))
   if [ ${#targets[@]} -gt 1 ]; then
     echo "
 Please provide a media drive name on the command line, because more than
index 2d5b6b1b79baeebb872c72f33b56765b5efc083a..82e6fb7ecdb5a19708ceadf3380b534d4975c409 100644 (file)
@@ -13,6 +13,8 @@
 # An arbitrary format archive lister, although really we are mainly supporting
 # tar and zip currently, including compressed formats.
 
+source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
+
 archive_file="$1"; shift
 if [ -z "$archive_file" ]; then
   echo "This script takes one archive name (in .tar.gz, .zip, etc. formats) and"
@@ -25,9 +27,9 @@ if [ ! -f "$archive_file" ]; then
 fi
 
 if [ -z "$PAGER" ]; then
-  PAGER=$(which less)
+  PAGER=$(whichable less)
   if [ -z "$PAGER" ]; then
-    PAGER=$(which more)
+    PAGER=$(whichable more)
     if [ -z "$PAGER" ]; then
       PAGER="cat"
     fi
index e62e2e31815fb15fd6f4d56a64696923871175dc..5143f048554525a2d919fd2558be27ee4de39ab2 100644 (file)
@@ -14,7 +14,6 @@
 ##############
 
 # make our functions available to the aliases.
-#hmmm: should this be necessary?  will it even work?
 source "$FEISTY_MEOW_SCRIPTS/core/functions.sh"
 
 ##############
@@ -47,11 +46,11 @@ if [ "$OS" != "Windows_NT" ]; then
   if [ -n "$IS_DARWIN" ]; then
     # case for mac os x.
     define_yeti_alias exp='open'
-  elif [ ! -z "$(which dolphin 2>/dev/null)" ]; then
+  elif [ ! -z "$(whichable dolphin)" ]; then
     # we prefer dolphin if available.
     define_yeti_alias exp='screen -L -S dolphin-$RANDOM -d -m dolphin '
 #--select 
-  elif [ ! -z "$(which nautilus 2>/dev/null)" ]; then
+  elif [ ! -z "$(whichable nautilus)" ]; then
     # launch nautilus if available.
     define_yeti_alias exp='nautilus'
   else
index 3a2151b1f22a68814e360c62ecb334df16851911..6989449f702b475fdfe2fb5fa9bc4049334e98d6 100644 (file)
@@ -33,6 +33,20 @@ if [ -z "$skip_all" ]; then
     date +"%Y$sep%m$sep%d$sep%H%M$sep%S" | tr -d '/\n/'
   }
   
+  # a wrapper for the which command that finds items on the path.  some OSes
+  # do not provide which, so we want to not be spewing errors when that
+  # happens.
+  function whichable()
+  {
+    to_find="$1"; shift
+    local WHICHER="$(which which 2>/dev/null)"
+    if [ $? -ne 0 ]; then
+      # there is no which command here.  we produce nothing due to this.
+      echo
+    fi
+    echo $($WHICHER $to_find)
+  }
+
   # makes a directory of the name specified and then tries to change the
   # current directory to that directory.
   function mcd() {
@@ -475,7 +489,7 @@ if [ -z "$skip_all" ]; then
 
   # overlay for nechung binary so that we can complain less grossly about it when it's missing.
   function nechung() {
-    local wheres_nechung=$(which nechung 2>/dev/null)
+    local wheres_nechung=$(whichable nechung)
     if [ -z "$wheres_nechung" ]; then
       echo "The nechung oracle program cannot be found.  You may want to consider"
       echo "rebuilding the feisty meow applications with this command:"
@@ -591,20 +605,6 @@ automatic if there is even a small amount of doubt about the issue."
     echo
   }
 
-  # a wrapper for the which command that finds items on the path.  some OSes
-  # do not provide which, so we want to not be spewing errors when that
-  # happens.
-  function whichable()
-  {
-    to_find="$1"; shift
-    which which &>/dev/null
-    if [ $? -ne 0 ]; then
-      # there is no which command here.  we produce nothing due to this.
-      echo
-    fi
-    echo $(which $to_find)
-  }
-
   function add_cygwin_drive_mounts() {
     for i in c d e f g h q z ; do
 #hmmm: improve this by not adding the link if already there, or if the drive is not valid.
@@ -860,7 +860,7 @@ return 0
       this_host=$(hostname)
     elif [ ! -z "$(echo $MACHTYPE | grep suse)" ]; then
       this_host=$(hostname --long)
-    elif [ -x "$(which hostname 2>/dev/null)" ]; then
+    elif [ -x "$(whichable hostname)" ]; then
       this_host=$(hostname)
     fi
     echo "$this_host"
index 8c21424f03e2333de834484c56a68f37101858e7..7d13748ed9d1fcadab147cd81489cf317e693a52 100644 (file)
@@ -331,20 +331,20 @@ export EDITOR
 # going to work well unless they can be prevented from forking the process
 # off.
 if [ -z "$EDITOR" ]; then
-  EDITOR="$(which gvim)"
+  EDITOR="$(whichable gvim)"
   if [ ! -z "$EDITOR" ]; then
     # if we found gvim, then add in the no forking flag.
     EDITOR+=" --nofork"
   fi
 fi
 if [ -z "$EDITOR" ]; then
-  EDITOR="$(which vim)"
+  EDITOR="$(whichable vim)"
 fi
 if [ -z "$EDITOR" ]; then
-  EDITOR="$(which vi)"
+  EDITOR="$(whichable vi)"
 fi
 if [ -z "$EDITOR" ]; then
-  EDITOR="$(which emacs)"
+  EDITOR="$(whichable emacs)"
 fi
 ####
 # out of ideas about editors at this point.
index 99027e6ff482120151f667743a8fafc372601611..b8e71a33b4827f2d67127d93a6c14e691a938703 100644 (file)
@@ -65,7 +65,7 @@ fi
 if [ ! -d "$JAVA_HOME" ]; then
   unset JAVA_HOME
   unset JAVA_BIN_PIECE
-  if [ -z "$(whichable java 2>/dev/null)" ]; then
+  if [ -z "$(whichable java)" ]; then
     intuition_failure JAVA_HOME
   fi
 fi
@@ -104,7 +104,7 @@ else
     ECLIPSE_DIR=$(echo $ECLIPSE_DIR | sed -e 's/^\(.\):/\/cygdrive\/\1/')
   fi
 fi
-if [ -z "$ECLIPSE_DIR" -a -z "$(whichable eclipse 2>/dev/null)" ]; then
+if [ -z "$ECLIPSE_DIR" -a -z "$(whichable eclipse)" ]; then
   intuition_failure ECLIPSE_DIR
 fi
 
index 5342ef2cc8fd672189c48bff0baf9ecfc006dec4..703e003ddf52269c1215b5a9db6cbe59f784cff6 100644 (file)
@@ -15,8 +15,8 @@ source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh"
 export MAX_DEPTH=5
 
 # use our splitter tool for lengthy output if it's available.
-if [ ! -z "$(which splitter 2>/dev/null)" ]; then
-  TO_SPLITTER="$(which splitter)"
+if [ ! -z "$(whichable splitter)" ]; then
+  TO_SPLITTER="$(whichable splitter)"
   # calculate the number of columsn in the terminal.
   cols=$(get_maxcols)
   TO_SPLITTER+=" --maxcol $(($cols - 1))"
index 60024c7515fa45091eeb4518ee947542da4777c8..0a52aa64d380b77dd9f2b4cf166924f97db32665 100644 (file)
@@ -16,14 +16,14 @@ if debian_like; then
   exit $?
 fi
 
-rpm_available="$(which rpm)"
+rpm_available="$(whichable rpm)"
 if [ ! -z "$rpm_available" ]; then
 #is that the right phrase for rpm?  somewhat forgotten.
   rpm -qa | eval $SEEK_PIECE
   exit $?
 fi
 
-yum_available="$(which yum)"
+yum_available="$(whichable yum)"
 if [ ! -z "$yum_available" ]; then
   yum list | eval $SEEK_PIECE
   exit $?