snarf updated from experience with new config names, utils updated with higher stack...
[feisty_meow.git] / scripts / core / functions.sh
index f1fd1ea1b59c88fa6ab46224efb6dd76f778ed10..c38bc7f4693c6b1f52f711610d7add0ba797c735 100644 (file)
@@ -8,16 +8,17 @@ function_sentinel &>/dev/null
 if [ $? -eq 0 ]; then
   # there was no error, so we can skip the inits.
   if [ ! -z "$SHELL_DEBUG" ]; then
-    echo skipping functions.sh because already defined.
+    echo "skipping function definitions, because already defined."
   fi
   skip_all=yes
 fi
 
 if [ -z "$skip_all" ]; then
+
   if [ ! -z "$SHELL_DEBUG" ]; then
-    echo function definitions begin...
+    echo "feisty meow function definitions beginning now..."
   fi
-  
+
   # a handy little method that can be used for date strings.  it was getting
   # really tiresome how many different ways the script did the date formatting.
   function date_stringer() {
@@ -62,7 +63,7 @@ if [ -z "$skip_all" ]; then
     fi
   }
 
-  # checks the result of the last command that was run, and if it failed,
+  # checks the result of the last command that was run, and if that failed,
   # then this complains and exits from bash.  the function parameters are
   # used as the message to print as a complaint.
   function check_result()
@@ -98,9 +99,6 @@ if [ -z "$skip_all" ]; then
       # we 'type' the file to get rid of the unicode result from wmic.
       cmd $flag type "$tmppid" >$PID_DUMP
       \rm "$tmppid"
-#      local CR='
-#'  # embedded carriage return.
-#      local appropriate_pattern="s/^.*  *\([0-9][0-9]*\)[ $CR]*\$/\1/p"
       local appropriate_pattern="s/^.*  *\([0-9][0-9]*\) *\$/\1/p"
       for i in "${patterns[@]}"; do
         PIDS_SOUGHT+=($(cat $PID_DUMP \
@@ -282,8 +280,20 @@ if [ -z "$skip_all" ]; then
   
   # recreates all the generated files that the feisty meow scripts use.
   function regenerate() {
+    # do the bootstrapping process again.
+    echo "regenerating feisty meow script environment."
     bash $FEISTY_MEOW_SCRIPTS/core/bootstrap_shells.sh
     echo
+    # force a full reload by turning off sentinel variable and alias.
+    # the nethack one is used by fred's customizations.
+    # interesting note perhaps: found that the NETHACKOPTIONS variable was
+    # not being unset correctly when preceded by an alias.  split them up
+    # like they are now due to that bug.
+    unset -v CORE_ALIASES_LOADED FEISTY_MEOW_GENERATED NECHUNG NETHACKOPTIONS 
+    unset -f function_sentinel 
+    # reload feisty meow environment in current shell.
+    source $FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh
+    # run nechung oracle to give user a new fortune.
     nechung
   }
 
@@ -339,26 +349,21 @@ if [ -z "$skip_all" ]; then
     echo "copying custom overrides for $user"
     mkdir "$FEISTY_MEOW_GENERATED/custom" 2>/dev/null
     perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_DIR/customizing/$user" "$FEISTY_MEOW_GENERATED/custom"
-    # set up any custom script files which we'll add as aliases.
-#    if [ -e "$FEISTY_MEOW_GENERATED/custom/scripts" ]; then
-#      echo removing older custom scripts.
-#      rm -rf "$FEISTY_MEOW_GENERATED/custom/scripts"
-#    fi
     if [ -d "$FEISTY_MEOW_DIR/customizing/$user/scripts" ]; then
       echo "copying custom scripts for $user"
-      cp -R "$FEISTY_MEOW_DIR/customizing/$user/scripts" "$FEISTY_MEOW_GENERATED/custom/"
+      \cp -R "$FEISTY_MEOW_DIR/customizing/$user/scripts" "$FEISTY_MEOW_GENERATED/custom/"
     fi
     echo
     regenerate
   }
 
+#uhhh, this does what now?
   function add_cygwin_drive_mounts() {
     for i in c d e f g h q z ; do
       ln -s /cygdrive/$i $i
     done
   }
 
-
   # takes a file to modify, and then it will replace any occurrences of the
   # pattern provided as the second parameter with the text in the third
   # parameter.
@@ -375,11 +380,35 @@ if [ -z "$skip_all" ]; then
     sed -i -e "s%$pattern%$replacement%g" "$file"
   }
 
+  function spacem()
+  {
+    while [ $# -gt 0 ]; do
+      arg="$1"; shift
+      if [ ! -f "$arg" -a ! -d "$arg" ]; then
+        echo "failure to find a file or directory named '$arg'."
+        continue
+      fi
+      # first we rename the file to be lower case.
+      perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$arg" &>/dev/null
+      # oops, now the name is all lower-case.  we need to make the
+      # same adjustment.
+      arg2="$(echo "$arg" | tr A-Z a-z)"
+      # we definitely wanted to adjust the case first, rather than doing all
+      # the wacky stuff this script does to the filename...  we will capture
+      # the output of the replace operaton for reporting.
+      final_name="$(perl "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg2")"
+      # now zap the intermediate part of the name off.
+      final_name="$(echo $final_name | sed -e 's/.*=> //')"
+      # printout the combined operation results.
+      echo "'$arg' => $final_name"
+    done
+  }
+
   ##############
 
   function function_sentinel() { return 0; }
   
-  if [ ! -z "$SHELL_DEBUG" ]; then echo function definitions end....; fi
+  if [ ! -z "$SHELL_DEBUG" ]; then echo "feisty meow function definitions done."; fi
   
 fi